【问题标题】:Finding highest value from a record从记录中寻找最高价值
【发布时间】:2011-05-25 17:51:21
【问题描述】:

我正在尝试编写一个程序,该程序通过数字记录并找到最高的,当前代码如下。我遇到的问题是它似乎只是列出了记录中的最后一个分数(不是最高的)。非常感谢任何帮助。

Procedure FindTopScore(Var TopScores : TTopScores);
Var
Count : Integer;
Highest : Integer;
Name: String;

Begin
     For Count := 1 to MaxSize Do
          If TopScores[Count].Score > Highest Then
     Highest := TopScores[Count].Score;
     Name := TopScores[Count].Name;
       Writeln('Higest score is by ' ,TopScores[Count].Name, ' of ', TopScores[Count].Score);
End;

【问题讨论】:

    标签: pascal counter record records highest


    【解决方案1】:

    你输出的不是Highest,而是TopScores[Count].Score。只需使用

     Writeln('Highest is ', Highest, ' for ', Name);
    

    您还应该将名称放入 if 语句内的变量 Name(它实际上在外部)。

    插件:如果你想要所有名字以防出现平局,你可以使用例如以下代码

    Highest := 0;
    For Count := 1 to MaxSize Do Begin
         If TopScores[Count].Score = Highest Then Begin
             Name := Name + ' and ' + TopScores[Count].Name;
         End;
         If TopScores[Count].Score > Highest Then Begin
             Highest := TopScores[Count].Score;
             Name := TopScores[Count].Name;
         End;
     End;
    

    【讨论】:

    • 啊,我明白了,谢谢。还修复了名称问题。感谢您指出了这一点。还说如果两个人的最高分相同,无论如何都要输出他们两个?
    • @Jeff 你可以例如将新名称附加到变量 Name if TopScores[Count].Score = Highest 在你的循环中,如果它真的更大,则替换它。
    • 我很困惑,你可以给我看一下代码吗?我把它设为最高,但输出只是随机的 ASCII 字符。
    • 谢谢,我现在明白了。当您对变量说新名称时,我有点困惑。我现在明白了。谢谢!
    【解决方案2】:

    除了霍华德的答案,在开始循环之前将“0”设置为“最高”。由于未初始化,它具有任意值,可能高于最高分。

    【讨论】:

    • 谢谢,但是这样做有什么好处,因为没有它也可以正常工作。
    • @Jeff - 未初始化的局部变量保存其内存位置的值。对于整数,它可以是 0 或其他任何值,现在可以是 0,但在其他时间执行过程时它可能是其他任何值。如果您没有使用 FPC、Delphi 等常用编译器,请检查您的编译器文档是否如此。
    【解决方案3】:

    除了接受的答案,请确保打开警告和提示,您会看到:

          testhighest.pp(16,39) Warning: Local variable "Highest" does not seem to be initialized
    

    这是

            If TopScores[Count].Score > Highest Then
    

    【讨论】:

      猜你喜欢
      • 2016-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多