Определить два элемента массива с наименьшими значениями, и присвоить им max значение между ними - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Пожалуйста, помогите переделать эту программу так, что бы она определяла 2 элемента с наименьшими значениями и присваивала значения максимального элемента, расположенным между ними найденными значениями Спасибо огромное заранее:3
Листинг программы
  1. var
  2. a: array [1..100] of integer;
  3. c1,c2,n,I,max1,max2,nmax1,nmax2:integer;
  4. begin
  5. readln(n);
  6. randomize;
  7. for i:=1 to n do
  8. a[i]:=random(50);
  9. for i:=1 to n do
  10. write (a[i],’ ’);
  11. writeln;
  12. max1:=a[1];
  13. max2:=a[2];
  14. nmax1:=1;
  15. nmax2:=2;
  16. if max1<max2 then
  17. begin
  18. c1:=max1;
  19. max1:=max2;
  20. max2:=c1;
  21. c2:=nmax;
  22. nmax1:=nmax2;
  23. nmax2:=c2;
  24. end;
  25. for i:=3 to n do
  26. begin
  27. if a[i]>=max1 then begin
  28. max2:=max1;
  29. nmax2:=nmax1;
  30. max1:=a[i];
  31. nmax1:=i;
  32. end;
  33. if (a[i]>max2) and (a[i]<max1) then begin
  34. max2:=a[i];
  35. nmax2:=i;
  36. end;
  37. end;
  38. if nmax1<nmax2 then
  39. begin
  40. for i:=nmax1+1 to nmax2-1 do
  41. a[i]:=0;
  42. end
  43. else
  44. begin
  45. for i:nmax2+1 to nmax1-1 do
  46. a[i]:=0;
  47. end;
  48. writeln;
  49. writeln(max1, ‘, max2);
  50. for i:=1 to n do
  51. write(a[i], ‘);
  52. readln;
  53. end.

Решение задачи: «Определить два элемента массива с наименьшими значениями, и присвоить им max значение между ними»

textual
Листинг программы
  1. uses crt;
  2. var a: array [1..100] of integer;
  3.     n,i,min1,min2,max,x:integer;
  4. begin
  5. clrscr;
  6. repeat
  7. write('Введите размер массива от 3 до 100 n=');
  8. readln(n);
  9. until n in [3..100];
  10. randomize;
  11. writeln('Массив');
  12. for i:=1 to n do
  13.  begin
  14.   a[i]:=random(50);
  15.   if i=1 then max:=a[1]
  16.   else if a[i]>max then max:=a[i];
  17.   write(a[i]:4);
  18.  end;
  19. writeln;
  20. if a[1]<a[2] then
  21.  begin
  22.   min1:=1;
  23.   min2:=2;
  24.  end
  25. else
  26.  begin
  27.   min1:=2;
  28.   min2:=1;
  29.  end;
  30. for i:=3 to n do
  31.  begin
  32.   if a[i]<a[min1] then
  33.    begin
  34.     min2:=min1;
  35.     min1:=i;
  36.    end
  37.   else if a[i]<a[min2] then min2:=i;
  38.  end;
  39. writeln('Первое минимальное=a[',min1,']=',a[min1]);
  40. writeln('Второе минимальное=a[',min2,']=',a[min2]);
  41. writeln('Максимальныйлемент=',max);
  42. if abs(min1-min2)=1 then
  43.  begin
  44.   writeln('Между первым и вторым минимальными нет других элементов');
  45.   exit;
  46.  end;
  47. if min2<min1 then //обменяем местами если 2 ближе 1
  48.  begin
  49.   x:=min2;
  50.   min2:=min1;
  51.   min1:=x;
  52.  end;
  53. writeln('Измененный массив');
  54. for i:=1 to n do
  55.  begin
  56.   if i in [min1+1..min2-1] then a[i]:=max;
  57.   write(a[i]:4);
  58.  end;
  59. readln
  60. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы