while循环得到错误的值?

时间:2014-12-08 10:39:07

标签: c++ while-loop

这是我用c ++做的代码。而程序应该只接受数字。它需要四个正确的输入才能进入下一个过程。并且应该忽略错误的输入。问题是,它接受8个正确的输入。它会忽略前4个正确答案,并获得最后4个正确输入的值。它应该只询问并获得四个值。我的循环出了什么问题?

#include <iostream>
#include <stdlib.h>
#include <iomanip>

using namespace std;

int main(int argc, char** argv) {

float a=0, b=0, c=0, d=0, grade = 0;


cout << " Enter your Grade on Quiz no. 1 : \t";
cin >> a ;          
cout << " Enter your Grade on Quiz no. 2 : \t";
cin >> b ;
cout << " Enter your Grade on Quiz no. 3 : \t";
cin >> c;
cout << " Enter your Grade on Quiz no. 4 : \t";
cin >> d;

这是我制作的循环,它会忽略错误的输入

while(!(cin>>a))
    {
        cout<<"Wrong. Try again."<<endl;
        cin.clear();
        cin.ignore();
        system ("cls");
        cout << " Enter your Grade on Quiz no. 1 : \t";
        cin >> a ;

         if ( cin>> a){
            break;
        }
        }       

while(!(cin>>b))
    {
        cout<<"Wrong. Try again."<<endl;
        cin.clear();
        cin.ignore();
        system ("cls");
        cout << " Enter your Grade on Quiz no. 2 : \t";
        cin >> a ;

         if ( cin>> b){
            break;
        }
        }   

while(!(cin>>c))
    {
        cout<<"Wrong. Try again."<<endl;
        cin.clear();
        cin.ignore();
        system ("cls");
        cout << " Enter your Grade on Quiz no. 3 : \t";
        cin >> c ;

         if ( cin>> c){
            break;
        }
        }   

while(!(cin>>d))
    {
        cout<<"Wrong. Try again."<<endl;
        cin.clear();
        cin.ignore();
        system ("cls");
        cout << " Enter your Grade on Quiz no. 4 : \t";
        cin >> a ;

         if ( cin>> d){
            break;
        }
        }       

在4次正确输入后,它应该顺利进行。

system ("cls");

cout << "  Quiz#" << "\t\tGrade\n";
cout <<"    1\t\t" << a << endl;
cout <<"    2\t\t" << b << endl;
cout <<"    3\t\t" << c << endl;
cout <<"    4\t\t" << d << endl;
cout << "\n";

cout << " TOTAL AVE."<< "\t\tREMARKS\n";

grade = (a+b+c+d)/ 4;

if (grade> 94 && grade< 101 ) {

    cout << "    " << setw(4)<< left<<grade << "\t\tExcellent!\n\n";
}

else if (grade> 89 && grade< 95){

    cout << "    " << setw(4)<< left<< grade << "\t\tVery Satisfactory!\n\n";
}

else if (grade> 84 && grade< 90 ) {

    cout << "    " << setw(4)<< left<<grade << "\t\tSatisfactory!\n\n";
}

else if (grade> 79 && grade< 85 ) {

    cout << "    " << setw(4)<< left<<grade << "\t\tFine!\n\n";
}

else if (grade> 74 && grade< 80 ) {

    cout << "    " << setw(4)<< left<<grade << "\t\t\Fair!\n\n";
}

else if (grade> -1 && grade < 75 ) {

    cout << "    " << setw(4)<< left<<grade << "\t\t\Poor.\n\n";
}

else { 
    cout << "    " << setw(4)<< left<< "   " << "\t\t\Invalid Input.\n\n";
}

system ("PAUSE");
return EXIT_SUCCESS;
}

0 个答案:

没有答案