logo
Лекции по TURBO PASCAL

Анализ информации в массиве

Предположим, что у нас есть массив из 10 элементов:

7 30 4 15 32 6 18 41 6 40

И нам нужно найти максимальный элемент. Как бы вы сами нашли его? Одного взгляда на этот ряд чисел достаточно, чтобы сказать: это число 41. Но компьютер не может сразу взглянуть на все числа и найти нужное число. Ему приходится перебирать числа по одному. Это можно представить так: числа перед нами появляются по одному: сначала 7, потом 30, потом 4, затем 15... последним мы увидим число 40. Как из них найти максимальное?

Сначала предположим, что максимальным является первое число. Запишем где-нибудь, что 7 – это максимальное число. Когда перейдем ко второму числу, сравним его с максимальным: 30 больше чем 7? Да! Значит, теперь мы нашли новое максимальное число – 30. Продолжаем искать дальше. Сравниваем следующий элемент с максимальным, то есть 4 сравниваем с 30. 4 больше 30? Нет! Со спокойной совестью переходим к следующему числу. Как только новое число будет больше максимального, запомним его, как наибольшее число. В конце концов мы найдем ответ: максимальное число 41.

Переведём сказанное на язык Паскаль:

Max := a [1];

If a [2] > max then max := a [2];

If a [3] > max then max := a [3];

If a [4] > max then max := a [4];

И так далее, до последнего элемента.

Но это не очень удачный способ, так как мы не всегда знаем заранее, сколько элементов содержится в массиве. Поэтому лучше использовать цикл for:

Max := a [1];

For i := 2 to 10 do

If a [i] > max

then max := a [i];

Чаще бывает необходимо найти не только максимальный элемент, но и его номер. Например, если в таблице записаны стипендии студентов, то куда интереснее найти не только размер самой высокой стипендии, но и номер студента, который её получает. Как это осуществить в программе? Для этого при нахождении очередного элемента, претендующего на максимальный, надо будет запомнить не только его значение, но и его номер. На этот раз составим программу полностью:

Program Poisk_Krutyx_Studentov;

var A : array [1..10] of integer;

i, max, maxNr : integer;

begin

writeln ('Введите стипендии 10 студентов!');

for i := 1 to 10 do

readln (A [i]);

max := A [1]; { в max – значение максимального элемента, }

MaxNr := 1; { в MaxNr – номер этого элемента в массиве }

For i := 2 to 10 do

If A [i] > max

then begin

Max := A [i];

MaxNr:= i;{Запоминаем номер макс. элемента}

End

writeln ('Самый богатый студент с номером ', MaxNr);

End.

Попробуйте самостоятельно составить программу для нахождения минимального элемента массива и его номера. Что произойдёт, если в массиве будет несколько элементов с минимальными (максимальными) значениями?