Тема: МАССИВЫ (ОДНОМЕРНЫЕ)
Цель работы: освоение приемов объявления, обращения и использования массивов при решении задач.
Типовые алгоритмы обработки одномерных массивов
Рассмотрим некоторые типовые алгоритмы обработки массивов. Положим, что в декларативной части программы описаны следующие переменные: одномерные массивы А и В, переменные целого типа i, nEl, key, kol, temp.
Const
n=10; // число элементов в массивах
Type
tAr= array [1..n] of integer; // структура данных: массив из n (10) значений типа integer
Var
A, B: tAr; // переменные типа tAr (массивы)
i, // счетчик циклов
nEl, // номер элемента в массиве
key, // ключ для поиска
kol, // количество элементов
temp // переменная для временного хранения значения элемента массива (стакан)
: integer;
Примечание: Рекомендуется имена типов, вводимых пользователем, начинать с буквы ’t ’. Например, tVector, tMatrix, tComplex, tPerson и т. п.
Примечание: Обработка массива всегда сводится к обработке его элементов. Например, ввод или вывод массива означает ввод или вывод его элементов, поиск элемента сводится к проверке каждого его элемента и т.п. Причем использование в программе структуры данных массив подразумевает использование в ней циклов.
|
|
Ввод/Вывод элементов массива.
for i:=1 to n do // для каждого i от 1 до n (для каждого элемента массива)
ReadLn(A[i]); // введем i–й элемент
for i:=1 to n do // для каждого i от 1 до n (для каждого элемента массива)
WriteLn(A[i], ’, ’); // выведем i–й элемент
Суммирование элементов массива.
s:=0; // обнуляем сумму, 0 – нейтральный элемент для операции суммирования
for i:=1 to n do // для каждого i от 1 до n (для каждого элемента массива)
s:=s+a[i]; // добавляем i–й элемент к сумме
2. Суммирование элементов массива по ключу. «Суммирование по ключу» – суммирование только тех элементов, которые отвечают некоторому условию. Например, найдем сумму элементов больших некоторого числа key.
// ввод значения ключа
WriteLn(’Введите ключ’);
ReadLn(key);
// алгоритм поиск суммы по ключу
s:=0; // начальное значение суммы
for i:=1 to n do // для каждого элемента от 1 до n
if a[i]>key then // элемент больше ключевого значения
s:=s+a[i]; // тогда добавляем его к сумме
// вывод результата поиска
WriteLn(’Сумма элементов по ключу=’, s);
Подсчет количества элементов массива удовлетворяющих ключу.
// ввод значения ключа
WriteLn(’Введите ключ’);
ReadLn(key);
// алгоритм поиска количества элементов удовлетворяющих ключу
kol:=0; // начальное значение суммы
for i:=1 to n do // для каждого элемента от 1 до n
if a[i]>key then // элемент больше ключевого значения
kol:=kol+1; // нашли ещё один элемент удовлетворяющий условию
// вывод результата поиска
WriteLn(’Количество элементов по ключу = ’, s);