Определить два элемента массива с наименьшими значениями, и присвоить им 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.

Объяснение кода листинга программы

  1. Объявлены переменные: a (массив), n (размер массива), i (счетчик), min1, min2, max (для хранения максимального значения), x (для обмена значениями).
  2. Задается размер массива от 3 до 100.
  3. Массив заполняется случайными значениями от 0 до 49.
  4. Находится максимальное значение в массиве.
  5. Если первое и второе минимальные значения равны, то они меняются местами.
  6. Находится второе минимальное значение.
  7. Если между первым и вторым минимальными значениями нет других элементов, то программа завершается.
  8. Если второе минимальное значение ближе к первому, чем к третьему, то они меняются местами.
  9. Заполняется измененный массив, где значения между первым и вторым минимальными заменяются на максимальное значение.
  10. Программа завершается.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5
Похожие ответы