algorithm - 对用户输入的数字进行统计

标签 algorithm logic calculation

这是讲师给我的教程。我不明白这个问题。我需要正确方向的指导。

Write an algorithm to read in a list of basketball scores (non-negative integers) one at a time from the user and output the following statistics:

  1. Total number of games.
  2. Total number of games scoring at least 90 points.
  3. Percentage of games scoring at least 90 points.

The user entering a negative sentinel value indicates the end of the input. Note that the sentinel value is not used in computing the highest, lowest or average game score.

Requirements:

  • Write pseudo code for how you would solve each statistic
    • Example: total number of games
    • For each input score, increment games by one
  • Determine the variables you will need and figure out the type of each variable
  • Define and initialize each variable
  • Determine what type of loop you are going to write
  • Start with statistic number one (total number of games) and get your loop to compute the total number of games. When you end your loop, output the total number of games, and then move to problem two.
  • You only need to write one loop.
  • Write a complete algorithm for the above problem.

我试图理解需求并尝试使用谷歌搜索一些替代语言但找不到

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);

    }

最佳答案

由于这是您必须完成的任务,我们不应为您提供该任务的答案。

我将对您当前的伪代码提供一些评论。

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

到目前为止这是一个良好的开端,但最好使用实际说明它的变量名称(例如 numGamesnumHighScoringGames 将是很好的候选者)。此外,作业要求“找出每个变量的类型”。这是你还没有做的事情......

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

这个循环是错误的。循环结束后,o 将是一个大于 90 的数字。但是 o 应该是特定数量的游戏(得分至少为 90)。这应该触发警报……您还没有阅读任何输入,您似乎已经知道会有超过 90 个这样的游戏?这是不对的。

o 的值应该与循环是否应该继续无关。

input =get user input for score

同样,应该为变量input 确定数据类型。

n++

这很好,但是你没有考虑到作业的这一部分:

The user entering a negative sentinel value indicates the end of the input.

您的代码应验证用户是否输入了负标记值。如果是这样,你不应该要求更多的意见。

o += input 

变量 o 应该是游戏的数量,但现在您要向它添加分数...这不可能是正确的。还有,你是无条件加的。。。你要不要先看看那个游戏是不是“至少90分”

percentage = n/o *100

在这里,您按预期使用了 o(作为许多游戏)。但是想想这个……两者中哪一个会更大(当不相等时)? n 还是 o?考虑该答案:您的公式是否正确?

其次,分母可以为零吗?您应该保护代码免受它的影响吗?

output percentage

好的,但不要忘记作业要求提供三个统计数据,而不仅仅是一个。

关于algorithm - 对用户输入的数字进行统计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58562900/

相关文章:

c - C 中带有 malloc 的子字符串函数返回不正确的值

Java - 在除 double 时无法将 double 转换为整数

algorithm - Leetcode上 'Number of islands'的DFS和BFS时空复杂度

c++ - 基于学习内容的视频搜索的起点

java - java中的加权中位数

c - Peg Puzzle 格式化输出

string - 将数字序列转换为字母序列的最有效方法

使用函数的 C++ 字符串输入

javascript - 计算器高度宽度

size - 计算 Google Firestore 文档的大小