我是C ++的新手。
我的代码中的Yi函数有问题。
Yi函数中的do while循环永不中断。
我不知道问题出在哪里。我猜,这是布尔值,但不确定。
111111111111111111111111111111111111111111111111111111111111222222222222222222222233333333333333333333333333333333444444444444444444444444444444444444444444
没有更多详细信息。
#include "pch.h"
#include <iostream>
#include <iomanip>
#include <limits>
#include <cmath>
using namespace std;
double Yi(double&, double&, double&, int&, int&);
double Yi(double &f, double &a, double &b, int &i, int &n) {
float amin, amax, bmin, bmax, da, db;
bool z = true;
do { cout << "input amin, amax, da" << endl;
cout << "input bmin, bmax, db" << endl;
cout << "Input n" << endl;
while (!(cin >> amin) || !(cin >> amax) || !(cin >> da) || !(cin >> bmin) || !(cin >> bmax) || !(cin >> db) || !(cin >> n)) {
cout << "You have entered wrong input. Input values again: " << endl;
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
i = 1;
if ((amax > amin && da > 0) && (bmax > bmin && db > 0) && (n>=i))
{ for (a = amin; a < amax; a += da);
for (b = bmin; b < bmax; b += db);
for (i; i < n; i++);
}
float f1, f2;
if (a == 0)
{
cout << "***********************************************" << endl;
z;
}
if (a > 0)
{
f1 = (a * i + 2 * b) * (a * i + 2 * b) + pow(-1, i)*i;
f2 = sqrt(i*i + i);
f = f1 / f2;
z = false;
}
if (a < 0)
{
f1 = (a * i + 2 * b) * (a * i + 2 * b) + i;
f2 = sqrt(i*i - i + 1);
f = f1 / f2;
z = false;
}
} while (z);
return f;
}
我应该为工作代码更改什么? 先感谢您。 :)
答案 0 :(得分:0)
我什至不知道您的Yi
函数的作用,但是,z
中的布尔值仅在a
变为零的情况下才更改。因此,我们可以假设a
永远不会小于或等于0,因此如果if ((amax > amin && da > 0) && (bmax > bmin && db > 0) && (n>=i))
或如果这样做,您的代码将永远不会进入此代码提供的块,而代码for (a = amin; a < amax; a += da);
不会这样做。 t执行,以使a
不小于amax
或增加a
直到达到0。如果if ((amax > amin && da > 0) && (bmax > bmin && db > 0) && (n>=i))
由以下内容开头
永远不会执行,a
已经设置为0。
通常,您不应该复制并粘贴代码并要求人们对其进行修复,但是,由于您既不熟悉该论坛,也不熟悉c ++编程,因此无论如何我都尽力帮助您。另请注意,最好张贴示例输入和输出,以使发现问题更容易。干杯。