При обработке массивов решения многих задач основываются на следующих задачах: вычисление суммы (произведения) элементов массива, нахождение наибольшего (наименьшего) элемента массива, упорядочивание элементов по возрастанию (убыванию) и т. п.
Пример 1: Вычисление суммы элементов массива.
program SummaElementov;
const n=7;
var A: array [1..n] of integer;
S, i: integer;
begin
writeln (‘Введите элементы массива А’);
for i:=1 to n do readln {a[i]);
s:=0;
for i:=1 to n do s:=s+a[i];
write (‘Сумма элементов массива =’,s)
end.
Если требуется выполнить какое-либо действие над всеми элементами массива, то это действие выполняется со всеми элементами массива по очереди, т. е. в цикле.
Пример 2: Программа формирует одномерный массив случайными числами, выполняет поиск наибольшего элемента массива, а затем выводит на экран его значение и порядковый номер.
program Max_Element;
var M: array [1..20] of byte;
max, i, n: byte;
begin
randomize;
for i:=1 to 20 do
begin
m[i]:=random(40);
write (m[i],’ ‘);
end;
writeln;
max:=m[1]; {считать 1-й элемент максимальным}
n:=1; {запомнить номер максимального элемента}
for i:=2 to 20 do {проверить все элементы, начиная со второго}
begin
if m[i]>max then {если очередной (i-й) элемент массива больше чем max}
begin
max:=m[i]; {то считать максимальным i-й элемент}
n:=i; {и запомнить его порядковый номер}
end;
end;
writeln (‘Максимальный элемент: ‘,max);
writeln (‘Он расположен на ‘,n,’ месте‘)
end.
Пример 3: Упорядочивание массива.
Имеется последовательность чисел, которую надо упорядочить по возрастанию. Зафиксируем первый элемент и будем последовательно сравнивать его со стоящим справа. Если какой-то из элементов справа окажется меньше первого, то этот элемент меняется местами с первым и т. д. В результате такого перебора на первом месте окажется минимальный элемент. Далее фиксируем второй элемент последовательности и просмотр повторяется.
i – индекс фиксируемого элемента; изменяется от 1 до (n-1);
j – индекс элементов, стоящих справа от фиксируемого и их всегда на 1 больше; изменяется от (i+1) до n;
с – переменная, используемая при перестановке двух элементов.
program Sortirovka;
const n=30;
var T: array [1..n] of integer;
c, i, j: integer;
begin
randomize;
for i:=1 to n do
begin
t[i]:=random(50);
write (t[i],’ ‘);
end;
writeln;
for i:=1 to n-1 do
for j:=i+1 to n do
if t[i]>t[j] then
begin
c:=t[i];
t[i]:=t[j];
t[j]:=c;
end;
write (‘Упорядоченный массив: ‘);
for i:=1 to n do write (t[i],’ ‘);
end.
Пример 4: В баскетбольную команду могут быть приняты ученики, рост которых превышает 170 см. Вывести на экран список учеников, принятых в команду.
program Bascetball;
var Name: array [1..30] of string;
h: array [1..30] of word;
Cand: array [1..30] of string;
i, k: integer;
begin
writeln (‘Введите фамилии и рост учеников‘);
for i:=1 to 30 do
begin
write (i,’. ‘);readln (Name[i]);
write (‘Рост: ‘); readln (h[i]);
end;
k:=0;
for i:=1 to 30 do
if h[i]>170 then
begin
k:=k+1;
Cand[k]:=Name[i];
end;
if k=0 then writeln (‘Кандидатов нет‘)
else
begin
writeln (‘Кандидаты в команду:‘);
for k:=1 to k do writeln (Cand[k])
end
end.
1. В массиве С(14) найти сумму отрицательных и среднее арифметическое положительных элементов.
2. В массиве Т(15) найти количество положительных, отрицательных и нулевых элементов.
3. Определите, есть ли в массиве элементы с одинаковыми значениями.
4. В массиве Х(13) положительные элементы уменьшить вдвое, а отрицательные увеличить на 5. Вывести на экран полученный массив. В полученном массиве найти наименьший элемент.
5. В массиве А(20) найти сумму наибольшего и наименьшего элементов.
6. В массиве У(n) найдите количество элементов кратных 6 и их произведение.
7. Даны два массива: А(10) и В(10). Образуйте массив С, состоящий из сумм корней соответствующих элементов массивов А и В.
8. В одномерном массиве найти количество четных и нечетных элементов.
9. Вычислите сумму квадратов всех элементов массива, исключая элементы кратные 5.
10. Программа находит количество элементов одномерного массива, больших числа х (вводится с клавиатуры), и вычисляет среднее арифметическое найденных элементов.
11. Массив R состоит из 20 целых положительных чисел. Образуйте массив R1 из четных элементов массива R, а массив R2 из нечетных элементов массива R.
12. Дан массив Х(15). Образуйте массив У, в котором сначала идут отрицательные элементы, затем нулевые и затем положительные элементы из массива Х.
13. Даны два массива А(10) и В(10). Создать массив С, в котором элементы из массива А стоят на четных местах, а элементы из массива В на нечетных местах.
14. Вычислите сумму элементов массива, индексы которых составляют в сумме заданное число К.
15. Ведомость по заработной плате содержит фамилии работников и их зарплату за текущий месяц. Выведите на экран список работников, чья заработная плата выше среднего, и фамилию работника, чья заработная плата является наименьшей.
16. Дан список из 15 футбольных команд и количество очков, набранных каждой командой. Нет команд с равным количеством очков. Требуется:
а) вывести список команд, набравших более 15 очков;
б) вывести название команды-чемпиона;
в) вывести название команды-аутсайдера.
17. Дан список класса и отметки каждого за контрольную работу. Требуется:
а) подсчитать количество работ, выполненных на «5», и вывести список этих учащихся;
б) подсчитать количество работ, выполненных на «4», и вывести список этих учащихся;
в) подсчитать количество работ, выполненных на «3», и вывести список этих учащихся;
г) подсчитать количество работ, выполненных на «2», и вывести список этих учащихся;
д) подсчитать успеваемость по формуле: .
18. Найти и напечатать номера элементов и элементы массива М(12), большие переменной R, вводимой с клавиатуры. Массив заполнить числами 33, 45, 12, 47, 21, 78, 43, 67, 26, 94, 80, 16
19. Заполнить массив Р(15) с клавиатуры. Составить программу, которая:
а) печатает положительные элементы массива;
б) печатает номера положительных элементов массива;
в) заменит все отрицательные элементы нулями;
г) разделит на 5 все элементы массива;
д) удвоит элементы, меньшие 7.
20. Имеется два массива: X и Y. Упорядочить их по убыванию и объединить в один массив Z.
21. Сортировать массив: список участников соревнований ранятся в двух массивах FIO(10), REZ(10). Расположить участников в соответствии с занятыми местами.
22. Вводится массив – список участников конференции. Расположить фамилии участников в алфавитном порядке.
23. Результаты переписи населения хранятся в массивах F и GR. Составьте программу для вывода на экран фамилий людей, старше 50 лет. Для проверки работоспособности программы использовать 10 вымышленных фамилий. Годы рождения указать следующие: 1989, 1978, 1955, 1976, 1951, 1990, 1980, 1974, 1953, 1960.
24. Составьте программу для вычисления функции:
z (x, y)=(2x2+3),
если ряду значений х: 0,003; 0,51; 1,39; 2,99; 3,05 соответствует ряд значений у: 0,63; 5,81; 4,79; 0,55; 1,01. Результат вывести на экран в виде таблицы соответствия значений переменных значению функции.
25. Составьте программу, которая формирует одномерный массив вводом с клавиатуры, находит в массиве элементы, заданные пользователем, подсчитывает их количество и выводит на экран номер первого найденного элемента.