我试图完成一个程序,它计算出自然对数2,根据所需的#术语使用和多少值显示后,每x步。例如,如果用户输入6个术语,每2步显示一次,它就会有这个输出;
0.5000000000
0.5833333333
0.6166666667
而不是:
1.0000000000
0.5000000000
0.8333333333
0.5833333333
0.7833333333
0.6166666667
对于我想要做的事情,这个循环不能正确工作,我试图找出哪些调整才能使它工作。任何帮助都是非常感谢的。
for(double x = 1; x <= numofterms; x += 1){
logarithm += denominator * 1 / x;
denominator = -denominator;
int printCounter = 0;
for(int i=1; i<=numofterms; i++) {
printCounter++;
if(printCounter >= displaycount) {
cout << setprecision(10) << showpoint << logarithm << endl;
printCounter = 0;
}发布于 2014-08-08 00:11:40
下面是可以这样做的代码:
int curPrintStep = displayCount;
for (int i = 1; i <= numOfterms ; i++) {
logarithm += denominator * 1 / (double) i;
denominator = -denominator;
if (i == curPrintStep) {
cout << setprecision(10) << showpoint << logarithm << endl;
curPrintStep += displayCount;
}
}变量I包含算法的当前步骤,同时用于计算对数。
我设置了一个步骤计数器变量curPrintStep,该变量设置为第一个打印步骤。每次检查当前步骤是否等于打印步骤时,我都会打印对数并将curPrintStep更改为指向下一个打印步骤(通过向其添加displayCount )。
发布于 2014-08-08 00:13:47
您使用的是printCounter >= displaycount,这是错误的
假设printCounter为100,displaycount为20,因此您应该得到6行,但当printCounter达到20时,它将显示每一行,因此您将得到81行。
所以更好地使用printCounter % displaycount == 0 --这将只显示printCounter的0,20,40,60,80,100值的行
https://stackoverflow.com/questions/25194143
复制相似问题