Вы хотите найти наибольшее число. Для этого ваше состояние не так. Ваш код находит номер наименьший .
Пример того, что происходит в вашем коде:
В какой-то момент времени iHighest
равно 42.4
; iInt
равно 2
, поэтому Marks[iInt]
равно 24.12
. Затем iHighest >= 24.12
, так что оно становится 24.12
! Другими словами, новое значение iHighest
на ниже , чем начальное значение.
Но, если вы хотите найти наибольшее число, то только если исследуемое в настоящее время число (Marks[iInt]
) на больше , чем текущее iHighest
, вы обновляете iHighest
.
И так как вы в любом случае инициализируете iHighest
первым элементом (индекс 0), вам нужно только проверить others :
for iInt := 1 to 4 do // not: 0 to 4
if Marks[iInt] > iHighest then // not the other way around
iHighest := Marks[iInt];
Обратите внимание, что нет необходимости сверяться с >=
. Вы обновляете iHighest
только если текущее значение выше , а не равно .
Лучший способ выяснить такие ошибки самостоятельно - отладка. Отладчик Delphi очень прост в использовании и может показать вам шаг за шагом, построчно , как меняются значения. Если бы вы использовали отладчик, вы бы увидели, как в вашем коде iHighest
будет принимать более низкое значение, а не более высокое, при каждом обновлении.
Просто прочитайте онлайн-справку по использованию отладчика. Это намного проще, чем вы думаете.