从记录中找到最高价值

时间:2011-05-25 17:51:22

标签: pascal counter record records highest

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

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;

3 个答案:

答案 0 :(得分:2)

您没有输出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;

答案 1 :(得分:1)

除了Howard的回答,在开始循环之前将'0'设置为'Highest'。未经初始化,它具有任意值,可能高于最高分。

答案 2 :(得分:0)

除了接受的答案,请务必打开警告和提示,然后您会看到:

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

        If TopScores[Count].Score > Highest Then

线