В массиве определить 2 элемента с наибольшими значениями - Pascal ABC
Формулировка задачи:
Задание.
В произвольно заданном одномерном массиве определить 2 элемента с наибольшими значениями и обнулить все элементы,расположенные между найденными значениями.
И если не трудно,можно,пожалуйста блок-схему. ( Массив,естественно,раскрывать не нужно) Спасибо!
Листинг программы
- program 1
- const
- nmax=25;
- var
- i,n:integer;
- a:array[1..max] of integer
- max1,imax1:integer; {pervoe max znach v massive}
- max2,imax2:integer; {vtoroe max znach v massive}
- Begin
- Writeln('Введите кол-во элементов массива');
- Readln (n);
- writeln('Введите',n,' элементов массива');
- for i:=1 to n do
- begin
- writeln('a[',i,']=');
- read(a[i];
- end;
- writeln('Исходный массив');
- for i:=1 to n do
- write (a[i]:7);
- writeln;
- {Поиск 2х элементов с наиб. значениями}
- {1ый элемент}
- max1:=a[1];
- imax1:=1;
- for i:=2 to n do
- if a[i]>max1
- then
- begin
- max1:=a[i];
- imax1:=i;
- end;
- {2ой элемент} {Примерно отсюда идёт бред}
- max2:=a[2];
- imax2:=2;
- for i:=3 to n do
- if a[i]>max2
- then
- begin
- max2:=a[i];
- imax2:=i;
- end;
- {А обнулить забыл как)) Лето...}
Решение задачи: «В массиве определить 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].
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д