繁体   English   中英

循环帮助。 在不应有的情况下终止。 C ++

[英]for loop help. Terminates when it isnt supposed to. c++

我是stackoverflow的新手,但我确实尝试寻找答案,但找不到。 我自己也似乎无法弄清楚。 因此,对于学校C ++项目,我们需要找到曲线下的面积。 我已经将所有公式都硬编码了,所以不用担心。 因此,该程序应该为(n)提供更高的精度和更高的值。 但是似乎当我将(n)的值设置为大于(b)时,该程序仅循环0并且不会终止。 你们能帮我吗。 谢谢。 这是代码:

/* David */

#include <iostream>
using namespace std;

int main()
{

cout << "Please Enter Lower Limit: " << endl;
int a;
cin >> a;

cout << "Please Enter Upper Limit: " << endl;
int b;
cin >> b;

cout << "Please Enter Sub Intervals: " << endl;
int n;
cin >> n;

double Dx = (b - a) / n;
double A = 0;
double X = a;

for (X = a; X <= (b - Dx); X += Dx)
{
    A = A + (X*X*Dx);
    X = X * Dx;
    cout << A << endl;
}

cout << "The area under the curve is: " << A << endl;

return 0;
}

abn是整数。 因此,以下内容:

(b - a) / n

可能为0。您可以将其替换为:

double(b - a) / n

由于(b - a) / n中的所有变量均为int ,因此您正在执行整数除法,这将丢弃结果中的分数。 分配给double不会改变这一点。

您应该将至少一个变量转换为double以便获得保留分数的浮点结果:

double Dx = (b - a) / (double)n;

其他答案是正确的。 您的问题可能是整数除法。 您必须将操作数转换为两倍。

但是您应该使用static_cast <>而不是C风格的强制类型转换 即使用

static_cast<double>(b - a) / n

而不是double(b - a) / n((double) (b - a)) / n

您正在执行整数除法。 整数除法将仅通过截断小数来返回整数:

3/2 == 1 //Because 1.5 will get cut to 1
3/3 == 1
3/4 == 0 //Because 0.5 will get cut to 0

您需要至少在“ /”左侧或右侧的两个值之一为十进制类型。

3 / 2.0f == 1.5f
3.0f / 2 == 1.5f
3.0f / 2.0f == 1.5f

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM