Рассчитать статистику по числам, введенным пользователем - PullRequest
0 голосов
/ 25 октября 2019

Это был мой урок, данный лектором. Я не понимаю вопроса. Мне нужно руководство в правильном направлении.

Напишите алгоритм для считывания из списка результатов баскетбола (неотрицательных целых чисел) по одному от пользователя и выведите следующую статистику:

  1. Общее количество игр.
  2. Общее количество игр, набравших не менее 90 баллов.
  3. Процент игр, набравших не менее 90 баллов.

Пользователь, вводящий отрицательное значение часового значения, указывает на конец ввода. Обратите внимание, что значение часового не используется при вычислении самого высокого, самого низкого или среднего игрового счета.

Требования:

  • Напишите псевдокод для определения каждой статистики
    • Пример: общее количество игр
    • Для каждого входного счета:увеличение игры на одну
  • Определите переменные, которые вам понадобятся, и определите тип каждой переменной
  • Определите и инициализируйте каждую переменную
  • Определите, какой типцикла, который вы собираетесь написать
  • Начните со статистики номер один (общее количество игр) и получите свой цикл для вычисления общего количества игр. Когда вы закончите свой цикл, выведите общее количество игр, а затем переходите ко второй задаче.
  • Вам нужно написать один цикл.
  • Напишите алгоритм complete для вышеуказанной проблемы.

Я попытался понять требование и попытался поискать в Google для альтернативного языка, но не смог

n = 0 // number of games
o = 0 // total number of games scoring at least 90 points

for( o = 0; o <= 90; o++ )
{
    input =get user input for score
    n++
    o += input 
}   
percentage = n/o *100
output percentage

Правильно ли я понял критерии вопроса?

РЕДАКТИРОВАТЬ Попытка ответа 1: -

int numGames = 0;           //number of games
int numTotalPoints = 0;     //total number of games scoring
int userInput =0;           //to Track input if negative number is enterred
double average = 0.0            //to get average of the game
double gameTo90Points =0.0; //calculate total games to reach 90 points
double percentage 0.0;          //to calculate the percentage

Text.put("Input the game score");
userInput = text.getInt;

while(userInput >= 0  )
    {
        numTotalPoints += userInput;
        numGames++;
        Text.put("Input the game score");
        userInput = text.getInt;
    }

if(numGames = 0)
    {
        Text.put("Not enough score to tabulate");
    }
    else
    {
        average = ((double)numTotalPoints)/numGames); 
        gameTo90Points = 90/average;
        percentage = (gameTo90Points/90)*100
        Text.put("Total number of games :" +numGames);
        Text.put("Total number of games scoring at least 90 points:" +gameTo90Points);
        Text.put("Percentage of games scoring at least 90 points:" +percentage);

    }

1 Ответ

2 голосов
/ 25 октября 2019

Поскольку это задача, которую вы должны выполнить, мы не должны предоставлять вам ответ на это задание.

Я предоставлю некоторые комментарии к вашему текущему псевдокоду.

n = 0 // number of games
o = 0 // total number of games scoring at least 90 points

Пока это хорошее начало, но лучше использовать имена переменных, которые на самом деле что-то говорят об этом (например, numGames, numHighScoringGames были бы хорошими кандидатами). Кроме того, присваивание просит «выяснить тип каждой переменной» . Это то, что вы еще не сделали ...

for( o = 0; o <= 90; o++ )

Этот цикл неправильный. После окончания цикла o будет числом больше 90. Но o должно быть определенным количеством игр (со счетом не менее 90). Это должно вызвать тревогу ... Вы еще не прочитали ни одного ввода и уже знаете, что таких игр будет более 90? Это неправильно.

Значение o не должно иметь ничего общего с продолжением цикла или нет.

input =get user input for score

Опять тип данныхдля переменной input.

n++

Это хорошо, но вы не учли эту часть задания:

Пользователь, вводящий отрицательное значение часового значения, указывает на конец ввода.

Ваш код должен проверить, вводил ли пользователь отрицательное значение часового. И если это так, вам не следует запрашивать дополнительные данные.

o += input 

Предполагается, что переменная o является числом игр, но теперь вы добавляете к ней счет. ... это не может быть правдой. Кроме того, вы добавляете его безоговорочно ... Если вы сначала не проверите, что эта игра "набирает не менее 90 очков" ?

percentage = n/o *100

Здесь вы используетеo как и было задумано (как ряд игр). Но подумайте об этом ... какой из двух будет больше (если не равен)? n или o? Принимая во внимание этот ответ: верна ли ваша формула?

Во-вторых, может ли знаменатель быть равен нулю? Стоит ли защищать код от него?

output percentage

ОК, но не забывайте, что для назначения требуется три статистики, а не только одна.

...