Цикл "Пока" не заканчивается, даже если я попытался уменьшить t - PullRequest
0 голосов
/ 13 октября 2019

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

Я проверил код несколькои думает, что это происходит из-за условного оператора и из-за того, что оператор if - else не выполняется. Итак, какие изменения я должен сделать, чтобы программа завершилась после ввода t.

#include<iostream>
using namespace std;

int main()
{
int t{0};
cin>>t;
while(t)
{
    double h{0},c{0},t(0);
    cin>>h>>c>>t;
    if(h>50 and c<0.7 and t>5600)
        cout<<"10\n";
    else if(h>50 and c<0.7)
        cout<<"9\n";
    else if(c<0.7 and t>5600)
        cout<<"8\n";
    else if(h>50 and t>5600)
        cout<<"7\n";
    else if(h>50 or c<0.7 or t>5600)
        cout<<"6\n";
    else
        cout<<"5\n";
    --t;
}
return 0;
}

Я ожидаю, что Программа завершит работу после ввода t, но это не происходит.

1 Ответ

3 голосов
/ 13 октября 2019

Вне цикла у вас есть

int t{0};

А внутри цикла у вас есть

double h{0},c{0},t(0);

У вас есть две разные и отличительные переменные t, которые затеняют друг друга. И внутри цикла, когда вы делаете --t, вы уменьшаете переменную внутри цикла, а не ту, которую используете для условия цикла.

Вы решаете это, используя описательные имена для ваших переменных вместо коротких одно-буквенные названия.

...