Есть ответ 👍

Водномерном массиве поменять местами максимальные и минимальные элементы (в паскале)

203
350
Посмотреть ответы 2

Ответы на вопрос:


Program pr; var a: array [1..10] of integer i, imax, imin, mx, mn, n: integer; begin for i : = 1 to 10 do a[i] : = random(50); mx : = a[1]; for i : = 2 to 10 do begin if a[i] > mx then begin mx : = a[i]; imax : = i end; end; mn : = a[0]; for i : = 2 to 10 do begin if a[i] < mn then begin mn : = a[i]; imin : = i end; end; a[imax] : = mn; a[imin] : = mx writeln(a); end.

//метод быстрой сортировки //pascal abc.net v3.1 сборка 1172 //по возрастанию const n=55; type ty=array[1..n] of integer; var ar: ty; s: integer; procedure quicksort(l,r: integer); var i,j,x,temp: integer;   begin   i: =l; //левый конец   j: =r; //правый конец   x: =ar[random(r-l+1)+l];     repeat       while ar[i]< x do inc(i); //пока выбранный элемент больше всех, что левее его(всё норм), увеличивать индекс       while x< ar[j] do dec(j); //пока выбранный элемент меньше всех, что правее его(всё норм), уменьшать индекс       if i< =j then //если левый индекс меньше или равен правому-продолжать         begin               temp: =ar[i];               ar[i]: =ar[j];               ar[j]: =temp;               inc(i); //чтобы не запустить бесконечную рекурсию               dec(j);         end;       until i> =j;   if l< j then quicksort(l,i); //l-левый конец нового витка, j-правый   if r> i then quicksort(i,r); //r-левый конец нового витка, i-правый end; begin randomize; writeln('first array: '); for s: =1 to n do   begin   ar[s]: =random(n);   write(ar[s]: 4);   end; quicksort(1,n); writeln; writeln('final array: '); ar.println; end. //по убыванию const n=55; type ty=array[1..n] of integer; var ar: ty; s: integer; procedure quicksort(l,r: integer); var i,j,x,temp: integer;   begin   i: =l; //левый конец   j: =r; //правый конец   x: =ar[random(r-l+1)+l];     repeat       while ar[i]> x do inc(i); //пока выбранный элемент больше всех, что левее его(всё норм), увеличивать индекс       while x> ar[j] do dec(j); //пока выбранный элемент меньше всех, что правее его(всё норм), уменьшать индекс       if i< =j then //если левый индекс меньше или равен правому-продолжать         begin               temp: =ar[i];               ar[i]: =ar[j];               ar[j]: =temp;               inc(i); //чтобы не запустить бесконечную рекурсию               dec(j);         end;       until i> =j;   if l< j then quicksort(l,i); //l-левый конец нового витка, j-правый   if r> i then quicksort(i,r); //r-левый конец нового витка, i-правый end; begin randomize; writeln('first array: '); for s: =1 to n do   begin   ar[s]: =random(n);   write(ar[s]: 4);   end; quicksort(1,n); writeln; writeln('final array: '); ar.println; end.

Популярно: Информатика