C ++。帮助缩短这段代码。 [英] C++. help in making this code shorter.

查看:66
本文介绍了C ++。帮助缩短这段代码。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

喜。有人可以帮我解决代码中的语法问题。我仍然开始学习C ++。

hi. can someone help me with the syntax in my code. im still beginning to learn about C++.

#include<iostream>
#include<math.h>
#define _USE_MATH_DEFINES // for C++
#include <cmath>
using namespace std;

int main(){
	
	int  iTerm;
	float  iSum=0.00,iDenom=1.00,iError;
	float iPi =  M_PI;
	
    cout<<"|Term|Value|Error|"  <<endl;

    for(iTerm=1;iTerm<=100;iTerm++){
	
		if(iTerm%2==1){
			iSum=iSum + (4/iDenom);
			cout<<"|"<<iTerm << "|"<<iSum;
			iError = iSum - iPi;  
			cout<<"|"<< iError <<endl;
			cout<<"\n";
			iDenom = iDenom + 2;
        }
        else{
		    iSum =iSum - (4/iDenom);
		    cout<<"|"<<iTerm<<"|"<<iSum;
		    iError = iSum - iPi; 
		    cout<<"|"<< iError <<endl;
		    cout<<"\n";
		    iDenom = iDenom + 2;
        }
    }
}





有人可以帮我缩短if和else里面的语法。在C中有一种方法可以缩短它。





额外帮助:

如何将iError打印成2位小数?在C中它的%.2f



谢谢你



can someone help me shorten the the syntax inside if and else. in C there is a way to shorten this.


additional help:
how can I make iError into printing 2 decimal places? in C its %.2f

thank you

推荐答案

如果你看看你的代码

那么你会发现你的if / else语句的两个分支

大致相同。

唯一的区别是iSum = iSum + (4 / iDenom); vs.iSum = iSum - (4 / iDenom);



所以你的代码应如下所示:

If you have a look at your code
then you will see that both branches of your if/else statement
contain mostly the same.
The only difference is "iSum=iSum + (4/iDenom);" vs. "iSum =iSum - (4/iDenom);"

So your code should look like this:
#include<iostream>
#include<math.h>
#define _USE_MATH_DEFINES // for C++
#include <cmath>
using namespace std;

int main(){

	int  iTerm;
	float  iSum = 0.00, iDenom = 1.00, iError;
	float iPi = M_PI;

	cout << "|Term|Value|Error|" << endl;

	for (iTerm = 1; iTerm <= 100; iTerm++){

		if (iTerm % 2 == 1){
			iSum = iSum + (4 / iDenom);
		}
		else{
			iSum = iSum - (4 / iDenom);
		}

		cout << "|" << iTerm << "|" << iSum;
		iError = iSum - iPi;
		cout << "|" << iError << endl;
		cout << "\n";
		iDenom = iDenom + 2;
	}
}



您应该始终遵循DRY原则:

http://en.wikipedia.org/wiki/Don%27t_repeat_yourself [ ^ ]



对于字符串格式,请查看:

http://www.tutorialspoint.com/c_standard_library/c_function_sprintf.htm [ ^ ]


for(iTerm=1;iTerm<=100;iTerm++)
{
	iSum += (8*(iTerm % 2)-4)/iDenom;
	cout<<"|"<<iTerm << "|"<<iSum;
	iError = iSum - iPi;  
	cout<<"|"<< iError << endl << endl;
	iDenom = iDenom + 2;
 }


尝试



Try

for (iTerm = 1; iTerm <= 100; iTerm++){
 
	if (iTerm % 2)
		iSum += (4 / iDenom);
	
	else
		iSum -= (4 / iDenom);
	
	cout << "|" << iTerm << "|" << iSum;
	iError = iSum - iPi;
	cout << "|" << iError << endl;
	cout << "\n";
	iDenom = iDenom + 2;
}


这篇关于C ++。帮助缩短这段代码。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆