WolfgangBeier Ответов: 1

Проверка входных данных в c++.


Ниже приведен мой код, и программа работает нормально, пока я не введу что-нибудь, кроме номера. Проблема возникает во время входной проверки оценки.
#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
    int counter = 0;
    double score,
           averagescore,
           totalscore = 0.0;

    cout << "Enter the score of a student, or -1 if no more students are left.\n";
    cin >> score;
    while (score < -1 || score > 100)
    {
        cout << "\nThat is not a valid answer please enter a percent between -1 and 100\n";
        cin >> score;
    }

    while (score != -1)
    {
        totalscore += score;
        cout << "\nEnter the score of a student, or -1 if no more students are left.\n";
        cin >> score;
        while (score < -1 || score > 100)
        {
            cout << "\nThat is not a valid answer please enter a percent between -1 and 100\n";
            cin >> score;
        }
        counter++;
    }

    averagescore = totalscore / counter;
    cout << "\nThe average score of the class is: " << averagescore << '%' << endl;
}


Что я уже пробовал:

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

1 Ответов

Рейтинг:
1

OriginalGriff

Видеть здесь: Конспекты лекций - cin.fail(), cin.clear(), cin.eof() и strchr()[^] - использовать cin.fail чтобы проверить, ввел ли пользователь вообще допустимый номер или слово "Привет", например.