Member 12962579 Ответов: 3

Как мне поставить проверку ввода


Здравствуйте, у меня есть кусок кода, который вычисляет баллы. Я хочу поставить проверку ввода, но не могу этого понять. Вы не могли бы мне помочь?

<pre>
int main()
{
	//DECLARATIONS
	int	 score1, score2, score3, rounds; 
	bool needInput = true;
	double total=0.0;
	double average = 0.0; // average score of an archer
	
	do
	    {
			for(rounds=1; rounds<=4; rounds++)
			{
				cout << "Enter Archer's Score:";
				cin >> score1;	
				
				if (score1 > 0, score1 < 60)
				{
					needInput=false;
				}
				else if(!cin)
				{
					cout << "The entry must be an integer.";
				}
				else
				{
					cout << "The entry must be between 0 and 60.";
				}
			}
			if(needInput=false)
			{
					total = total + score1;
				average = total / 3;
				cout << "Total Score=" << total << endl;
				cout << "Average Score=" << average << endl;
			}
			else
			{
				cout << "You entered invalid entry. You need to enter again.";
			}
			return 0;	
		}while (needInput);

}


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

Я попытался поставить цикл do-while, но он не перезапускается, когда пользователь вводит недопустимый ввод.

[no name]

Как вы думаете, что делает "if(needInput=false)"? Шагая по вашему коду с помощью отладчика, вы поймете, в чем проблема.

3 Ответов

Рейтинг:
2

Stefan_Lang

Когда вы читаете int от cin, он просто получит входные данные до (и не включая) первого символа, который не может быть интерпретирован как часть целого числа. Если первый символ ввода уже недействителен, то результат будет просто 0, но состояние cin не измениться. Следовательно, !cin вообще не указывает на недопустимый ввод!

Если вы хотите проверить правильность пользовательского ввода и ожидаете, что он может быть неправильным, вы должны прочитать ввод как строку. Затем вы можете изучить строку, чтобы выяснить, является ли она допустимой или нет.

(также: следуйте советам, приведенным в решении 2)


Рейтинг:
0

Rick York

Прокомментируйте возврат только около оператора while и посмотрите, что это сделает для вас.


Рейтинг:
0

Arun Maiya

измените код с

if (needInput = false)


к
if (needInput == false)


это должно сработать!