好的,我有点难过。我不知道如何操纵我的代码来执行while loop
。这是代码块(我不能使用每个教授指令的数组或向量)。提前感谢任何想法。
//function prompts the user for test scores, validates and stores the input scores
void getScore(double &score1, double &score2, double &score3, double &score4, double &score5)
{
cout << "Enter a score: ";
//input validation
while(score1 < 0 || score1 > 100 || score2 < 0 || score2 > 100 || score3 < 0 || score3 > 100 || score4 < 0 || score4 > 100 || score5 < 0 || score5 > 100)
{
cout << "Invalid input, all values\n";
cout << "must be between 0 and 100\n";
cin >> score1;
cout << "Enter a score: ";
cin >> score2;
cout << "Enter a score: ";
cin >> score3;
cout << "Enter a score: ";
cin >> score4;
cout << "Enter a score: ";
cin >> score5;
cout << "------------------------" << endl;
}
if(!(cin >> score >> score2 >> score3 >> score4 >> score5))
{
cout << "You have entered\n";
cout << "non-numeric input.\n";
cout << "Program is terminated\n";
cout << "Please try again" << endl;
exit(0);
}
}
答案 0 :(得分:2)
你不应该在没有检查的情况下阅读5个分数,然后在检查时尝试获得5个分数。我认为您需要删除前五个cin
和cout
,然后打印Enter 5 scores:
。
你的情况也错了,
if(!(cin >> score1|| cin >> score2 || cin >> score3 || cin >> score4 || cin >> score5))
应该是
if(!(cin >> score1 && cin >> score2 && cin >> score3 && cin >> score4 && cin >> score5))
// or, as willhelmtell reminded us, if (!(cin >> score1 >> score2 >> score3 >> ...))
因为您要检查是否有任何失败(&&
要求所有这些都是真的),而不是成功(||
要求只有一个是真的。)
答案 1 :(得分:1)
这不是一个提示的答案,因为这是作业。
不要马上做这么多。
如果你从写作开始
你可以将它们组合成任何类型的输入和放大器。你想要的验证逻辑。
也就是说,鉴于存在这样的事情:
bool getScore(double& score); // Returns true if a double was input
bool isValidScore(double score);
你可以读取给定数量的值,或读取直到输入非数字;只使用你开始使用的那两个函数就可以轻松完成。