Определить два элемента массива с наименьшими значениями, и присвоить им 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.
- Находится максимальное значение в массиве.
- Если первое и второе минимальные значения равны, то они меняются местами.
- Находится второе минимальное значение.
- Если между первым и вторым минимальными значениями нет других элементов, то программа завершается.
- Если второе минимальное значение ближе к первому, чем к третьему, то они меняются местами.
- Заполняется измененный массив, где значения между первым и вторым минимальными заменяются на максимальное значение.
- Программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д