I have a problem with a loop that I can't seem to resolve. The code is as follows:
#include <iostream.h>
#include <process.h>
int main()
{
float grade1;
float grade2;
float grade3;
float grade4;
float grade5;
float average;
bool decide1;
bool decide2;
bool decide3;
bool decide4;
bool decide5;
do
{
cout << "Please enter the student's first grade\n";
cin >> grade1;
decide1 = 1;
decide1 = ((grade1 >= 0) && (grade1 < 101));
}
while (decide1 != 1);
do
{
cout << "Please enter the student's second grade\n";
cin >> grade2;
decide2 = 1;
decide2 = ((grade2 >=0) && (grade2 < 101));
}
while (decide2 != 1);
do
{
cout << "Please enter the student's third grade\n";
cin >> grade3;
decide3 = 1;
decide3 = ((grade3 >=0) && (grade3 < 101));
}
while (decide3 != 1);
do
{
cout << "Please enter the student's fourth grade\n";
cin >> grade4;
decide4 = 1;
decide4 = ((grade4 >= 0) && (grade4 < 101));
}
while (decide4 != 1);
do
{
cout << "Please enter the student's fifth grade\n";
cin >> grade5;
decide5 = 1;
decide5 = ((grade5 >= 0) && (grade5 < 101));
}
while (decide5 != 1);
cout << "You entered " << grade1 << " " << grade2 << " " << grade3 << " " << grade4 << " " << grade5 << "\n";
average = (grade1+grade2+grade3+grade4+grade5)/5;
cout << "The student's average is " << average << "\n";
return 0;
}
Obviously this is a simple grade averaging program, but my problem resides within the do-while loops. If, for example, you were to enter a 'd' (without apostrophes), I get an infinite loop. Logically, it should ask the question again, and await input. I put the extra bool declarations in after the cins just before the program makes a decision about the boolian variables to try to fix the program, but it still has no effect. Anybody have any suggestions?
Thanks for your help!
Moscro
#include <iostream.h>
#include <process.h>
int main()
{
float grade1;
float grade2;
float grade3;
float grade4;
float grade5;
float average;
bool decide1;
bool decide2;
bool decide3;
bool decide4;
bool decide5;
do
{
cout << "Please enter the student's first grade\n";
cin >> grade1;
decide1 = 1;
decide1 = ((grade1 >= 0) && (grade1 < 101));
}
while (decide1 != 1);
do
{
cout << "Please enter the student's second grade\n";
cin >> grade2;
decide2 = 1;
decide2 = ((grade2 >=0) && (grade2 < 101));
}
while (decide2 != 1);
do
{
cout << "Please enter the student's third grade\n";
cin >> grade3;
decide3 = 1;
decide3 = ((grade3 >=0) && (grade3 < 101));
}
while (decide3 != 1);
do
{
cout << "Please enter the student's fourth grade\n";
cin >> grade4;
decide4 = 1;
decide4 = ((grade4 >= 0) && (grade4 < 101));
}
while (decide4 != 1);
do
{
cout << "Please enter the student's fifth grade\n";
cin >> grade5;
decide5 = 1;
decide5 = ((grade5 >= 0) && (grade5 < 101));
}
while (decide5 != 1);
cout << "You entered " << grade1 << " " << grade2 << " " << grade3 << " " << grade4 << " " << grade5 << "\n";
average = (grade1+grade2+grade3+grade4+grade5)/5;
cout << "The student's average is " << average << "\n";
return 0;
}
Obviously this is a simple grade averaging program, but my problem resides within the do-while loops. If, for example, you were to enter a 'd' (without apostrophes), I get an infinite loop. Logically, it should ask the question again, and await input. I put the extra bool declarations in after the cins just before the program makes a decision about the boolian variables to try to fix the program, but it still has no effect. Anybody have any suggestions?
Thanks for your help!
Moscro