Рассчитать среднее без учета последнего балла - PullRequest
0 голосов
/ 31 октября 2018

Как подсчитать среднее без учета последней игры. Я не хочу включать последнюю игру, так как для завершения цикла пользователь должен ввести -1. Таким образом, когда пользователь вводит -1, эта игра включается в среднее значение, когда это не должно быть так, чтобы завершить игру, а не фактические очки. Есть ли способ обойти это?

while (points != -1) 
{ 
total = total + points;
game++;  
cout << "Enter the points for game " << game << ": ";   
cin >> points; 
average = total / game;
}    

cout << "\nThe total points are " << total << endl;
cout << "\n The average points are " << average << endl;
system("PAUSE");
return 0;
}

Ответы [ 3 ]

0 голосов
/ 31 октября 2018
while (points != -1) // <--3
{ 
total = total + points;
game++;  
cout << "Enter the points for game " << game << ": "; // <--1 
cin >> points; 
average = total / game; // <--2
}    

Я пометил порядок операций. Проблема в том, что вы добавляете очки для усреднения после проверки на «-1».

while (temp != -1)
{
    total = total + points;
    cout << "Enter the points for game " << game << ": ";
    cin >> temp;
    if(temp != -1)
    {
        game++;
        points = temp;
        average = total / game;
    }
}

Я добавил переменную для временного хранения входного значения, подлежащего проверке, перед изменением основных переменных, подлежащих усреднению.

0 голосов
/ 31 октября 2018

Трудно сказать, что именно вы хотите, частично на основе описания и отсутствующего кода. Я предполагаю, что -1 означает «остановить цикл»

Вот то, что я думаю, что вы ищете:

game = 0;
total = 0;

while (1) {
    ++game;
    cout << "Enter the points for game " << game << ": ";
    cin >> points;

    if (points == -1)
        break;

    total = total + points;
}

game -= 1;

if (game > 0)
    average = total / game;
else
    average = 0;

cout << "\nThe total points are " << total << endl;
cout << "\n The average points are " << average << endl;
system("PAUSE");
return 0;
0 голосов
/ 31 октября 2018

Вы можете просто проверить свои очки, прежде чем разделить сумму и убавление, если это -1 таким образом:

while (points != -1) 
{ 
total = total + points;
game++;  
cout << "Enter the points for game " << game << ": ";   
cin >> points; 
if(points==-1){
game--;}
average = total / game;
}    

cout << "\nThe total points are " << total << endl;
cout << "\n The average points are " << average << endl;
system("PAUSE");
return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...