do-while中的无限循环 我是C++的新手。p>
我的代码中的Yi函数有问题 我的do-while循环在Yi函数中从未中断 我不知道问题出在哪里。我猜,它在布尔值中,但不确定 111111111111111111111111111111111111111111111111111111 2222222223333333333333333333344444444444444444444444444444 没有更多的细节do-while中的无限循环 我是C++的新手。p>,c++,visual-c++,C++,Visual C++,我的代码中的Yi函数有问题 我的do-while循环在Yi函数中从未中断 我不知道问题出在哪里。我猜,它在布尔值中,但不确定 111111111111111111111111111111111111111111111111111111 2222222223333333333333333333344444444444444444444444444444 没有更多的细节 #include "pch.h" #include <iostream> #include <
#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;
}
#包括“pch.h”
#包括
#包括
#包括
#包括
使用名称空间std;
双一(双&,双&,双&,内&,内&);
双一(双f、双a、双b、内i、内n){
浮点数amin、amax、bmin、bmax、da、db;
布尔z=真;
do{cout da)| | |!(cin>>bmin)| |!(cin>>bmax)| | |!(cin>>db)| |!(cin>>n)){
cout 0)和&(bmax>bmin&&db>0)和&(n>=i))
{对于(a=amin;a cout我甚至不确定你的Yi
函数做什么,但是,z
中的布尔值只有在a
变为大于零的情况下才会改变。因此,我们可以假设a
永远不会变为小于或大于0,因此你的代码永远不会进入这个ifif提供的块((amax>amin&&da>0)和(bmax>bmin&&db>0)和(n>=i))
或者,如果它这样做了,那么(a=amin;a
的这个代码块不会执行,因此a
不小于amax
或者a
会增加,直到它达到0。如果以下面的ifif((amax>amin&&da>0)开头的代码块&&&(bmax>bmin&&db>0)&&&(n>=i))
如果从未执行,a
已设置为0
通常不应该复制和粘贴代码,并要求人们修复它,但是,因为你是论坛的新手,也是C++编程新手,所以我一直尝试帮助你,也请注意,输入样本输入和输出,以便更容易识别问题是一个好主意。如果(i
设置似乎是一种奇怪的方式;