2012-02-20 69 views
0

好吧,我有点难倒在这里。我不知道如何操作我的代码来执行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

'我不能使用数组或矢量每个教授指令'甚至没有一个简单的数组,如'双分[5]'?这似乎过于严格。 – 2012-02-20 04:06:19

+0

@Jesse我希望。我有这个程序按照说明工作,但有这么多的事情,使我感到烦恼。 – Gmenfan83 2012-02-20 04:20:27

+0

这里是[一个例子](http://ideone.com/8v7IR)使用数组,可能会有所帮助。 – 2012-02-20 04:43:25

回答

2

您不应该在没有检查的情况下阅读5个分数,然后尝试通过检查获得5个以上的分数。我认为您需要删除前五个cincout,然后打印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

或只是'std :: cin >>得分1 >>得分2 >> ...' – wilhelmtell 2012-02-20 03:56:44

+0

@wilhelmtell是的,谢谢,添加了一条评论。 – 2012-02-20 03:57:53

+0

@SethCarnegie谢谢!这工作完美,但现在我的while循环不会执行。如果用户输入的不是数字,它会退出。 – Gmenfan83 2012-02-20 04:21:46

1

这不像是一个提示,因为这是作业。

不要一次做这么多事。

如果你开始写

  1. ,读取功能一个
  2. 可验证一个

您可以撰写他们到任何类型的输入的功能&验证逻辑你想要的。

也就是说,因为像这些存在:

bool getScore(double& score); // Returns true if a double was input 
bool isValidScore(double score); 

你能读值的给定数量,或一直读到非数字输入;这很容易使用你刚开始使用的两个功能来完成。