Примеры задач на массивы
Массив представляет собой сложный тип данных, включающий список значений, принадлежащих одному типу. В Pascal можно задавать как одномерные, так и двумерные массивы.
Рассмотрим задачи различных уровней сложности на одномерные массивы.
Элементы массива, которые больше предыдущего
Задача
Вывести элементы числового массива, которые больше, чем элементы, стоящие перед ними.
Например, дан массив [3, 9, 8, 4, 5, 1]. Следует вывести числа 9 и 5, так как перед ними стоят соответственно числа 3 и 4, которые меньше их.
Решение
Для решения задачи нужно каждый элемент сравнить с последующим или предыдущим. Если перебор идет с первого элемента, то должен продолжаться до предпоследнего. В таком случае выводятся элементы с индексом i+1 (что реализовано в коде ниже) в случае совпадения условия. Если перебор идет со второго элемента до последнего, то выводится элемент под индексом i.
const
N = 20;
var
a: array[1..N] of integer;
i: byte;
begin
randomize;
for i:=1 to N do begin
a[i] := random(100);
write(a[i]:4);
end;
writeln;
writeln('Элементы больше предыдущего: ');
for i:=1 to N-1 do
if a[i] < a[i+1] then
write(a[i+1]:4);
writeln;
end.
Разделить элементы массива на максимальный
Задача
Все элементы массива поделить на значение наибольшего элемента этого массива.
Похожие задачи
Поменять местами минимальный и максимальный элементы массива
Решение
Задача состоит из двух подзадач:
Поиск максимума.
Деление на него элементов массива.
const
M = 10;
var
C: array[1..M] of word;
maxC: word;
i: byte;
begin
randomize;
maxC := 0;
write('Исходный массив: ');
for i := 1 to M do begin
C[i] := random(1000);
write (C[i]:4);
if maxC < C[i] then
maxC := C[i];
end;
writeln;
writeln('Максимум: ', maxC);
write('Частные: ');
for i := 1 to M do begin
write (C[i]/maxC:6:2);
end;
writeln;
end.
Первый положительный элемент массива
Задача
Найти номер и значение первого положительного элемента массива.
Решение
Данная задача решается просто, если использовать оператор break. Массив перебирается в цикле. Каждый элемент проверяется на условие "больше нуля". Как только оно будет выполнено, элемент следует вывести на экран, а цикл прервать.
const N = 20;
var
arr: array[1..N] of integer;
i: byte;
begin
randomize;
for i:=1 to N do begin
arr[i] := random(100) - 75;
write(arr[i]:4);
end;
writeln;
for i:=1 to N do
if arr[i] > 0 then begin
writeln(i, ' ', arr[i]);
break;
end;
end.