Выведите номера трёх различных минимальных элементов массива - Pascal ABC (12992)
Формулировка задачи:
Заполните массив случайными числами в интервале (0,1000) и выведите номера трёх различных минимальных элементов.Разрешается сделать только один проход по массиву
Решение задачи: «Выведите номера трёх различных минимальных элементов массива»
textual
Листинг программы
const n=20;
var a:array[1..n] of integer;
i,j,mn1,mn2,mn3:integer;
begin
randomize;
writeln('Исходный массив');
for i:=1 to n do
begin
a[i]:=random(1001);
write(a[i]:4);
end;
writeln;
if a[1]<a[2] then mn1:=1 else mn1:=2;
if a[3]<a[mn1] then mn1:=3;
if a[1]>a[2] then mn3:=1 else mn3:=2;
if a[3]>a[mn3] then mn3:=3;
mn2:=6-mn1-mn2;
for i:=4 to n do
if a[i]<a[mn1] then
begin
mn3:=mn2;
mn2:=mn1;
mn1:=i;
end
else if a[i]<a[mn2] then
begin
mn3:=mn2;
mn2:=i;
end
else if a[i]<a[mn3] then mn3:=i;
writeln('Первые 3 минимальных имеют номера ',mn1,'(',a[mn1],') ',mn2,'(',a[mn2],') ',mn3,'(',a[mn3],')');
end.
Объяснение кода листинга программы
Данный код написан на языке Pascal ABC и выполняет следующие действия:
- Объявляет переменные: n (количество элементов в массиве), a (массив из n элементов), i, j, mn1, mn2, mn3 (переменные для хранения минимальных элементов).
- Заполняет массив случайными числами от 1001 до 9999.
- Находит три минимальных элемента массива и сохраняет их номера в переменных mn1, mn2 и mn3.
- Вычисляет значение переменной mn2 как разницу между mn1 и mn3.
- Проходится по оставшимся элементам массива и проверяет, является ли текущий элемент меньше mn1, mn2 или mn3. Если это так, то обновляет значения mn3, mn2 и mn1 соответственно.
- Выводит на экран первые три минимальных элемента и их номера. Таким образом, данный код выводит номера трех различных минимальных элементов массива.