Приемы работы с массивами |
Содержание | Назад | Вперед |
Поиск минимального и максимального элементов
В некоторых случаях приходится сталкиваться с ситуацией, когда нужно использовать относительно много переменных одного типа. Представим себе, что перед нами стоит задача составить программу, вычисляющую определенные метеорологические характеристики, например среднюю температуру за год. Естественно, нам понадобится ввести данные о температуре за каждый день. Для этого, в принципе, можно описать 365 переменных:
VAR
Day1, Day2, Day3, ... Day365 : Real;
Это выражение далеко не полное. Чтобы записать все переменные потребуется по крайней мере страница! Далее каждой переменной нужно присвоить определенное значение, а для вычисления среднего значения нужно написать выражение:
Srednee := (Day1 + Day2 + Day3 + ... + Day365)/365;
Для записи этого выражения также потребуется немало времени и терпения!
Но даже если у Вас хватит терпения написать целиком все выражение, то при попытки запустить программу на выполнение компилятор неминуемо выдаст сообщение об ошибке: too long string (слишком длинная строка), поскольку строка в тексте программы не может превышать 126 символов.В тоже время, при использовании массивов, для описания 365-ти переменных типа
Real достаточно написать:VAR
Day : Array [1..365] of Real;
Тем самым мы описываем сразу 365 переменных, которые могут использоваться в программе как обычные переменные:
Day[1], Day[2], Day[3], ..., Day[365]
Для вычисления среднего арифметического удобно воспользоваться оператором
FOR:Srednee := 0;
FOR i:=1 TO 365 DO Srednee := Srednee +
Day[i];
Srednee := Srednee/365;
Приемы работы с массивами
1. Ввод/вывод элементов массива
Пусть в программе описана переменная-массив:
VAR
V : Array [1..100] of Integer;
Значения элементов массива необходимо ввести с клавиатуры. Поскольку с элементами массива можно обращаться как с обычными переменными, мы вправе написать следующие строчки:
Write(‘Введите
V[1]: ’); ReadLn(V[1]);
Write(‘Введите V[2]: ’); ReadLn(V[2]);
. . .
. . .
. . .
Write(‘Введите V[100]:
’); ReadLn(V[100]);
Однако писать сто почти одинаковых строчек занятие весьма утомительное и главное не разумное. Отличие этих строк состоит лишь в индексе элемента массива. Здесь на помощь приходит оператор
FOR, так как именно он позволяет самым эффективным образом организовать циклический процесс с заданным числом повторений. Кроме этого параметр цикла можно использовать в качестве индекса массива V. Итак, ввод элементов массива V можно оформить следующим образом:FOR
i:=1 TO 100 DO begin
Write(‘Введите V[‘,i,’]: ’);
ReadLn(V[i])
end;
Если необходимо вывести все элементы массива на экран (в строчку), то это также можно сделать с помощью оператора
FOR:FOR i:=1 TO 100 DO Write( V[i]:5 );
Примечание: Запись
V[i]:5 в процедуре Write означает, что при выводе значения переменной V[i] под число будет отведено 5 знакомест (подробнее о форматах вывода см. здесь).Ввод и вывод элементов двумерного массива. При вводе и выводе элементов двумерного массива (матрицы) тоже удобно использовать оператор
FOR. Только теперь необходимо уже два оператора FOR, так как у матрицы каждый элемент имеет два индекса – номер строки и номер столбца. Ниже приведен пример программы, иллюстрирующей ввод элементов массива размером 5х3 с клавиатуры с последующим выводом элементов массива на экран в виде матрицы.PROGRAM
Array_Input_Output;
VAR
M : array [1..5, 1..3] of Integer;
i, j : Integer;
BEGIN
Writeln(‘Ввод элементов массива.’);
FOR i:=1 TO 5 DO
FOR j:=1 TO 3 DO begin
Write(‘Введите элемент M[‘, i, ’,’, j, ’]:
’);
Readln(M[i,j])
end;
Writeln(‘Вывод массива в виде матрицы.’);
FOR i:=1 TO 5 DO begin
FOR j:=1 TO 3 DO
Write( M[i,j]:5 );
Writeln
end;
END.
2. Поиск минимального и максимального элементов в массиве
Задача поиска минимального и максимального элементов в неупорядоченном массиве является одной из самых распространенных задач, возникающей при работе с массивами. Для ее решения используется стандартный алгоритм, состоящий из следующих шагов (для случая поиска минимального элемента):
Аналогично осуществляется поиск максимального элемента.
PROGRAM
Min_Max;
VAR
V : array [1..5] of Integer;
i, min, max : Integer;
BEGIN
...
ввод элементов массива V;
...
min := V[1];
max := V[1];
FOR i:=2 TO 5 DO begin
IF V[i] < min THEN min := V[i];
IF V[i] > max THEN max := V[i];
end;
Writeln(‘min: ’, min);
Writeln(‘max: ’, max)
END.
3.Сортировка элементов массива
Содержание | Назад | Вперед |
Права на материал принадлежат их авторам