Уверен, что в этой программе вы не найдёте ничего сложного!
4.3. Анализ информации в массиве
Предположим, что у нас есть массив из 10 элементов:
И нам нужно найти максимальный элемент. Как бы вы сами нашли его? Одного взгляда на этот ряд чисел достаточно, чтобы сказать: это число 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;
writeln ('Введите стипендии 10 студентов!');
for i := 1 to 10 do
readln (A [i]);
max := A [1]; { в max – значение максимального элемента, }
MaxNr := 1; { в MaxNr – номер этого элемента в массиве }