В одномерном массиве определить два элемента с минимальными значениями - Pascal
Формулировка задачи:
В произвольно заданном одномерном массиве определить два элемента с минимальными значениями и уменьшить исходный массив на элементы, расположенные между найденными значениями.
Решение задачи: «В одномерном массиве определить два элемента с минимальными значениями»
textual
Листинг программы
uses crt;
const nmax=100;
var a:array[1..nmax] of integer;
n,i,j,k,m1,m2:integer;
begin
clrscr;
randomize;
repeat
write('Размер массива А от 2 до ',nmax,' n=');
readln(n);
until n in [2..nmax];
writeln('Массив A');
for i:=1 to n do
begin
a[i]:=random(100);
write(a[i]:4)
end;
writeln;
if a[1]>a[2] then
begin
m1:=1;
m2:=2;
end
else
begin
m1:=2;
m1:=1;
end;
for i:=2 to n do
if a[i]<a[m1] then
begin
m2:=m1;
m1:=i;
end
else if a[i]<a[m2] then m2:=i;
writeln('Первый элемент с минимальным значениен a[',m1,']=',a[m1]);
writeln('Второй элемент с минимальным значениен a[',m2,']=',a[m2]);
if abs(m1-m2)=1 then write('Между ними элементов нет')
else
begin
if m1>m2 then
begin
k:=m1;
m1:=m2;
m2:=k;
end;
for i:=1 to m2-m1-1 do
begin
for j:=m1+1 to n-1 do
a[j]:=a[j+1];
n:=n-1;
end;
writeln('Измененный массив');
for i:=1 to n do
write(a[i]:4);
end;
readln
end.
Объяснение кода листинга программы
- Объявляется переменная
aкак массив целых чисел размером от 1 до nmax. - Объявляются переменные
n,i,j,k,m1,m2как целые числа. - Инициализируется графический вывод.
- Генерируется случайное значение
- Повторяем ввод размера массива
nдо тех пор, покаnне будет в пределах от 2 до nmax. - Выводится сообщение
Массив A. - В цикле для каждого элемента массива генерируется случайное число от 0 до 99 и выводится его значение.
- Проверяется, какой из первых двух элементов меньше и записываются их индексы в переменные
m1иm2. - Происходит поиск двух элементов с минимальными значениями в массиве.
- Выводится первый элемент с минимальным значением и его индекс.
- Выводится второй элемент с минимальным значением и его индекс.
- Проверяется условие наличия элементов между первым и вторым минимальными значениеми.
- Если элементы не находятся рядом, то удаляются элементы между ними из массива
aи выводится измененный массив. - Программа ожидает ввода данных перед завершением.