Pascal 从记录中查找最高值

Pascal 从记录中查找最高值,pascal,counter,record,records,highest,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[Co

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

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;

您没有输出
最高值
,而是输出
顶核[Count]。分数
。只用

 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;

您没有输出
最高值
,而是输出
顶核[Count]。分数
。只用

 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;

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

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

除了公认的答案外,请确保打开警告和提示,您将看到:

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

        If TopScores[Count].Score > Highest Then

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

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

        If TopScores[Count].Score > Highest Then

啊,我明白了,谢谢。还修复了名称问题。谢谢你指出这一点。也就是说,如果两个人拥有相同的最高分数,是否要同时输出这两个分数?@Jeff你可以将新名称附加到变量
name
if
topscore[Count]。Score=Highest
在你的循环中,如果它真的更大,就替换它。我很困惑,你能给我看一下代码吗?我把它设为=最高,但输出只是随机的ASCII字符。谢谢,我现在明白了。当你们给变量起新名字时,我有点困惑。我现在明白了。谢谢啊,我明白了,谢谢。还修复了名称问题。谢谢你指出这一点。也就是说,如果两个人拥有相同的最高分数,是否要同时输出这两个分数?@Jeff你可以将新名称附加到变量
name
if
topscore[Count]。Score=Highest
在你的循环中,如果它真的更大,就替换它。我很困惑,你能给我看一下代码吗?我把它设为=最高,但输出只是随机的ASCII字符。谢谢,我现在明白了。当你们给变量起新名字时,我有点困惑。我现在明白了。谢谢谢谢,但这样做的好处是什么,因为没有它也可以正常工作。@Jeff-未初始化的局部变量保留其内存位置的值。对于整数,它可以是0或任何其他值,现在可以是0,但在执行过程的其他时间,它可能是任何其他值。如果您没有使用FPC、Delphi等常用编译器,请查看编译器文档,看是否如此。谢谢,但这样做的好处是什么,因为没有它也可以正常工作。@Jeff-未初始化的局部变量保留其内存位置的值。对于整数,它可以是0或任何其他值,现在可以是0,但在执行过程的其他时间,它可能是任何其他值。如果您没有使用FPC、Delphi等常用编译器,请检查编译器文档,看是否如此。。