В массиве определить 2 элемента с наибольшими значениями - Pascal ABC
Формулировка задачи:
Задание.
В произвольно заданном одномерном массиве определить 2 элемента с наибольшими значениями и обнулить все элементы,расположенные между найденными значениями.
И если не трудно,можно,пожалуйста блок-схему. ( Массив,естественно,раскрывать не нужно) Спасибо!
Решение задачи: «В массиве определить 2 элемента с наибольшими значениями»
textual
Листинг программы
const nmax=25;
var a:array[1..nmax] of integer;
n,i,imax1,imax2,x:integer;
begin
repeat
write('Введите кол-во элементов массива от 2 до ',nmax,' n=');
readln (n);
until n in [2..nmax];
writeln('Введите',n,' элементов массива');
for i:=1 to n do
begin
writeln('a[',i,']=');
readln(a[i]);
end;
writeln('Исходный массив');
for i:=1 to n do
write (a[i],' ');
writeln;
{Поиск 2х элементов с наиб. значениями}
if a[1]>a[2] then
begin
imax1:=1;
imax2:=2;
end
else
begin
imax1:=2;
imax2:=1;
end;
for i:=3 to n do
if a[i]>a[imax1] then
begin
imax2:=imax1;
imax1:=i;
end
else if a[i]>a[imax2] then imax2:=i;
writeln('Первый максимальный элемент=',a[imax1],' его номер=',imax1);
writeln('Второй максимальный элемент=',a[imax2],' его номер=',imax2);
if abs(imax1-imax2)=1 then write('Нет элементов для обнуления')
else
begin
if imax2<imax1 then
begin
x:=imax1;
imax1:=imax2;
imax2:=x;
end;
for i:=imax1+1 to imax2-1 do
a[i]:=0;
writeln('Измененный массив');
for i:=1 to n do
write(a[i],' ');
end;
end.
Объяснение кода листинга программы
- Создается переменная nmax, которая имеет максимальное значение для количества элементов в массиве, равное 25.
- Создается переменная a, которая представляет собой массив целых чисел.
- Создаются три переменные: n, i и imax1. Переменная n используется для хранения введенного пользователем количества элементов массива, переменная i используется для перебора элементов массива, а переменная imax1 используется для хранения индекса первого максимального элемента.
- Выводится сообщение с просьбой ввести количество элементов массива от 2 до nmax.
- Считывается введенное пользователем количество элементов массива.
- Выводится сообщение с просьбой ввести n элементов массива.
- Для каждого i от 1 до n выполняется цикл. В каждой итерации выводится сообщение с просьбой ввести значение элемента массива a[i].
- Если a[1] больше a[2], то переменные imax1 и imax2 устанавливаются в 1 и 2 соответственно.
- Если a[i] больше a[imax1] для i от 3 до n, то переменные imax1 и imax2 обновляются. Если a[i] больше a[imax2], то imax2 устанавливается в i.
- Выводится сообщение с просьбой ввести два элемента массива с наибольшими значениями.
- Если abs(imax1 - imax2) равно 1, то выводится сообщение
Нет элементов для обнуления. - Если imax2 меньше imax1, то переменные x, imax1 и imax2 устанавливаются в x = imax1, imax1 = imax2 и imax2 = x соответственно.
- Для каждого i от imax1 + 1 до imax2 - 1 выполняется цикл. В каждой итерации a[i] устанавливается в 0.
- Выводится измененный массив.
- Для каждого i от 1 до n выполняется цикл. В каждой итерации выводится значение a[i].