Original Post
Okay, a friend put together the following little program and asked me why when the user inputs an invalid number, it loops and waits for input correctly, while when the user inputs a letter, it loops infinitely, without waiting for input. I tried casting student_grade to int, but it doesn''t make a difference. Any ideas?
#include <iostream>
void main ()
{
int student_grade; //Students number grade
while (true)
{
std::cout << "Enter in your number grade: ";
std::cin >> student_grade;
if (student_grade >= 0 && student_grade <= 60) //Between 0 and 60
{
if (
std::cout << "Your letter grade is a F.\n";
break;
}
else if (student_grade > 60 && student_grade <= 70) //Between 61 and 70
{
std::cout << "Your letter grade is a D.\n";
break;
}
else if (student_grade > 70 && student_grade <= 80) //Between 71 and 80
{
std::cout << "Your letter grade is a C.\n";
break;
}
else if (student_grade > 80 && student_grade <= 90) //Between 81 and 90
{
std::cout << "Your letter grade is a B.\n";
break;
}
else if (student_grade > 90 && student_grade <= 100) //Between 91 and 100
{
std::cout << "Your letter grade is an A.\n";
break;
}
else //If student enters in a negative number or a number higher than 100
std::cout << "You have an entered an incorrect grade, please enter
another one in.\n";
}
}