Бесконечный цикл в до - PullRequest
       0

Бесконечный цикл в до

0 голосов
/ 01 октября 2018

Я новичок в C ++.

У меня проблема с функцией Yi в моем коде.

Мой цикл do while в функции Yi никогда не прерывается.

Я не знаю, в чем проблема.Я думаю, это в значении bool, но не уверен.

111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222223333333333333333333333333333333333333333333333333333333344334433443344444444444444444444444444444444444444444444444

1010 * Подробнее
 #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;

}

Что я должен изменить для рабочего кода?Заранее спасибо.:)

1 Ответ

0 голосов
/ 02 октября 2018

Я даже не уверен, что делает ваша функция Yi, однако логическое значение в z изменяется только в случае, если a становится отличным от нуля.Следовательно, мы можем предположить, что a никогда не становится меньше и не больше 0, поэтому ваш код никогда не входит в блок, предоставленный этим, если if ((amax > amin && da > 0) && (bmax > bmin && db > 0) && (n>=i)) или, если это так, этот блок кода for (a = amin; a < amax; a += da); не выполняется, поэтому aне меньше чем amax или a увеличивается до тех пор, пока не достигнет 0. В случае, если блок, возглавляемый следующим, если if ((amax > amin && da > 0) && (bmax > bmin && db > 0) && (n>=i)) никогда не выполняется, a уже установлен на 0.

Обычноне следует копировать и вставлять код и просить людей его исправить, однако, поскольку вы новичок в форуме, а также плохо знакомы с программированием на c ++, я все равно пытался вам помочь.Также обратите внимание, что рекомендуется размещать образцы ввода и вывода, чтобы упростить выявление проблемы.Приветствия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...