do-while中的无限循环 我是C++的新手。p>

do-while中的无限循环 我是C++的新手。p>,c++,visual-c++,C++,Visual C++,我的代码中的Yi函数有问题 我的do-while循环在Yi函数中从未中断 我不知道问题出在哪里。我猜,它在布尔值中,但不确定 111111111111111111111111111111111111111111111111111111 2222222223333333333333333333344444444444444444444444444444 没有更多的细节 #include "pch.h" #include <iostream> #include <

我的代码中的Yi函数有问题

我的do-while循环在Yi函数中从未中断

我不知道问题出在哪里。我猜,它在布尔值中,但不确定

111111111111111111111111111111111111111111111111111111 2222222223333333333333333333344444444444444444444444444444

没有更多的细节

 #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;acout我甚至不确定你的
Yi
函数做什么,但是,
z
中的布尔值只有在
a
变为大于零的情况下才会改变。因此,我们可以假设
a
永远不会变为小于或大于0,因此你的代码永远不会进入这个if
if提供的块((amax>amin&&da>0)和(bmax>bmin&&db>0)和(n>=i))
或者,如果它这样做了,那么(a=amin;a
的这个代码块
不会执行,因此
a
不小于
amax
或者
a
会增加,直到它达到0。如果以下面的if
if((amax>amin&&da>0)开头的代码块&&&(bmax>bmin&&db>0)&&&(n>=i))
如果从未执行,
a
已设置为0

通常不应该复制和粘贴代码,并要求人们修复它,但是,因为你是论坛的新手,也是C++编程新手,所以我一直尝试帮助你,也请注意,输入样本输入和输出,以便更容易识别问题是一个好主意。如果(i

设置
似乎是一种奇怪的方式;