проблема с завершением через -1

Мне нужно использовать -1 для завершения, но по-прежнему отображать резюме.
Каждый раз, когда я пытался завершить программу, программа не выводит сводную информацию.
Есть до 10 испытаний, если вам не хватает информации для 10, и вы хотите остановиться на 8, вы вводите -1, и он идет в сводку, а затем завершает программу

while(i<10)
{
do
{
cout << "Enter result """ << i+1 << """ (or -1 if no more results): ";
cin >> score[i];
if(score[i] >=0 && score[i] <=49)
{
cout << "Grade " << "U" << " will be assigned to this result\n";
bool test=true;
i++;
}
else if(score[i] >=50&& score[i] <=59)
{
cout << "Grade " << "P" << " will be assigned to this result\n";
bool test=true;
i++;
}
else if(score[i] >=60 && score[i] <=69)
{
cout << "Grade " << "C" << " will be assigned to this result\n";
bool test=true;
i++;
}
else if(score[i] >=70 && score[i] <=89)
{
cout << "Grade " << "B" << " will be assigned to this result\n";
bool test=true;
i++;
}
else if(score[i] >=90 && score[i] <=100)
{
cout << "Grade " << "A" << " will be assigned to this result\n";
bool test=true;
i++;
}
    else
{
test=false;
cout << "Invalid Input!\n";
}
}
while(test);
}cout << "\nSummary of the results:\n";
for(int a=0;a< 10;a++)
{
std::cout <<  std::fixed << std::setprecision(2) << "Result " << a+1 << " "  << score[a] << " Grade " << determine_grade(score[a]) << "\n";
}

cout << "\nThe average of the results = " << calc_average(score) << "\n";
cout << "The lowest of the results = " << find_lowest(score) << "\n";
cout << "The highest of the results = " << find_highest(score) << "\n";
system("Pause");

-1

Решение

Вам не нужны две петли, только одна. Вам нужно скомбинировать ваши два условия в одном i<10 && test,

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

bool test = true;
while(i<10 && test)
{
cout << "Enter result """ << i+1 << """ (or -1 if no more results): ";
if(score[i] >=0 && score[i] <=49)
{
cout << "Grade " << "U" << " will be assigned to this result\n";
i++;
}
...
else
{
test=false;
cout << "Invalid Input!\n";
}
}
0

Другие решения

Попробуй использовать break; когда -1 вводится внутри цикла while. Кроме того, вы можете использовать 1 цикл вместо двух, как упоминалось выше.

Еще одна вещь, которую нужно искать, это ваш последний цикл for, он изменяется от 0 до 9, но в случае, если кто-то использовал -1 и вводил только 3 оценки, для решений могут быть нечетные значения.

0

По вопросам рекламы [email protected]