Определить два элемента массива с наименьшими значениями, и присвоить им max значение между ними - Free Pascal
Формулировка задачи:
Пожалуйста, помогите переделать эту программу так, что бы она определяла 2 элемента с наименьшими значениями и присваивала значения максимального элемента, расположенным между ними найденными значениями
Спасибо огромное заранее:3
Листинг программы
- var
- a: array [1..100] of integer;
- c1,c2,n,I,max1,max2,nmax1,nmax2:integer;
- begin
- readln(n);
- randomize;
- for i:=1 to n do
- a[i]:=random(50);
- for i:=1 to n do
- write (a[i],’ ’);
- writeln;
- max1:=a[1];
- max2:=a[2];
- nmax1:=1;
- nmax2:=2;
- if max1<max2 then
- begin
- c1:=max1;
- max1:=max2;
- max2:=c1;
- c2:=nmax;
- nmax1:=nmax2;
- nmax2:=c2;
- end;
- for i:=3 to n do
- begin
- if a[i]>=max1 then begin
- max2:=max1;
- nmax2:=nmax1;
- max1:=a[i];
- nmax1:=i;
- end;
- if (a[i]>max2) and (a[i]<max1) then begin
- max2:=a[i];
- nmax2:=i;
- end;
- end;
- if nmax1<nmax2 then
- begin
- for i:=nmax1+1 to nmax2-1 do
- a[i]:=0;
- end
- else
- begin
- for i:nmax2+1 to nmax1-1 do
- a[i]:=0;
- end;
- writeln;
- writeln(max1, ‘ ‘, max2);
- for i:=1 to n do
- write(a[i], ‘ ‘);
- readln;
- end.
Решение задачи: «Определить два элемента массива с наименьшими значениями, и присвоить им max значение между ними»
textual
Листинг программы
- uses crt;
- var a: array [1..100] of integer;
- n,i,min1,min2,max,x:integer;
- begin
- clrscr;
- repeat
- write('Введите размер массива от 3 до 100 n=');
- readln(n);
- until n in [3..100];
- randomize;
- writeln('Массив');
- for i:=1 to n do
- begin
- a[i]:=random(50);
- if i=1 then max:=a[1]
- else if a[i]>max then max:=a[i];
- write(a[i]:4);
- end;
- writeln;
- if a[1]<a[2] then
- begin
- min1:=1;
- min2:=2;
- end
- else
- begin
- min1:=2;
- min2:=1;
- end;
- for i:=3 to n do
- begin
- if a[i]<a[min1] then
- begin
- min2:=min1;
- min1:=i;
- end
- else if a[i]<a[min2] then min2:=i;
- end;
- writeln('Первое минимальное=a[',min1,']=',a[min1]);
- writeln('Второе минимальное=a[',min2,']=',a[min2]);
- writeln('Максимальныйлемент=',max);
- if abs(min1-min2)=1 then
- begin
- writeln('Между первым и вторым минимальными нет других элементов');
- exit;
- end;
- if min2<min1 then //обменяем местами если 2 ближе 1
- begin
- x:=min2;
- min2:=min1;
- min1:=x;
- end;
- writeln('Измененный массив');
- for i:=1 to n do
- begin
- if i in [min1+1..min2-1] then a[i]:=max;
- write(a[i]:4);
- end;
- readln
- end.
Объяснение кода листинга программы
- Объявлены переменные: a (массив), n (размер массива), i (счетчик), min1, min2, max (для хранения максимального значения), x (для обмена значениями).
- Задается размер массива от 3 до 100.
- Массив заполняется случайными значениями от 0 до 49.
- Находится максимальное значение в массиве.
- Если первое и второе минимальные значения равны, то они меняются местами.
- Находится второе минимальное значение.
- Если между первым и вторым минимальными значениями нет других элементов, то программа завершается.
- Если второе минимальное значение ближе к первому, чем к третьему, то они меняются местами.
- Заполняется измененный массив, где значения между первым и вторым минимальными заменяются на максимальное значение.
- Программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д