You have several problems with this, but first off, that is not really a loop. What would happen if there were 200 students?
Write a program which repeatedly asks the user to enter students' score in a test until the user enters -1.
The first line tells you what to use for a condition to end the loop. so...
1 2 3 4
while(grade != -1)
{
}
With that you should be able to think of some ways to accomplish the rest. There should only be one line asking for a grade and one to get the input, for example.
admkrk's idea would only work if you entered -1 on the last input. I would first make your main loop something like while(x == 0) and have it loop for ever then after every cin >> grade;
i would do an if statement saying
1 2
if (grade == -1)
break;
this would break your main loop then you can continue on with the calculations. how ever you would need to store all you values in an array which would be cool if you are conferrable with them
admkrk's idea would only work if you entered -1 on the last input.
Is not that the idea?
how ever you would need to store all you values in an array
Why? There is no specification to track individual grades. A running total along with a count of the number of grades is all that is asked for. There is no need to use an array to do either.
What if I enter -50?
Simple exercises like this assume correct input. Validating input only adds to the complexity when getting the logic right is the main goal.
My answer was not meant to solve every problem with garen's code, only to get him started thinking in the right direction. Assuming his code did work, the average would be -1, regardless of grades entered or number of grades entered. If you want to help him, please do not distract him with irrelevant ideas.
#include <iostream>
using std::cout; using std::cin; using std::endl;
int main()
{
int highest = 0, //highest score
score = 0, //current score
sum = 0, //total score
count = 0; //number of scores
for(;;)
{
cout << "Enter Student " << count+1 << "\'s score:"; //count+1, so we start at Student 1
cin >> score;
if(score == -1) //note the break before adding the score to the total
break; //this is so that -1 isn't added to the total which messes up the total and the average
sum += score; //keep track of the total score
//'?' known as the conditional or ternary operator; makes simple if-else statements in one line
(score > highest) ? (highest = score) : 0; //if current score entered is greater than highest, store the current score entered
count++; //increment count
}
cout << "\nTotal score is: " << sum << endl;
cout << "Average is: " << sum/count << endl;
cout << "Highest score is: " << highest << endl;
return 0;
}
No they don't. There's a reason why @OP's professor put the exact instructions "grade must be from 0 to 100". The only thing they might possibly assume is correct data type. So they're gonna stick to ints if using ints, floats if using floats, etc.