В заданном векторе найти его минимальный и максимальный элементы.Выполните сортировку элементов вектора,стоящих между минимальным и максимальным по возрастанию, если минимальный элемент стоит в векторе левее максимального, и по убыванию если максимальный левее минимального — Pascal(Паскаль)

program Vector;
uses crt;{если у Вас работает этот модуль, лучше подключить, можно очищать экран}
Const
Nmax=1000;
Type
TVector=array[1..Nmax] of real;
Var
A:TVector;
N:integer;
i,j,imax,imin:integer;{добавим переменные-индексы мин и макс эл-тов}
Max,Min,x:real;{добавим переменную х для сортировки}
Begin
repeat {так правильно проверять ввод размера массива, да и любой величины}
write('N=');readln(N);
until (N>=1) and (N<=nmax);
for i:=1 to N do
   Begin
     write ('A[',i,']=');readln(a[i]);
   end;
clrscr;{очистим экран от ввода}
writeln('Ishodnaya matrica:');{и выведем матрицу на экран}
for i:=1 to n do
write(a[i]:6:2);{6 позиций под число, 2 знака после запятой}
writeln;
max:=A[1];Min:=A[1];
imax:=1;imin:=1;{индексы мин и макс}
for i:=2 to N do
if (A[i]>Max) then
  begin
    Max:=A[i];{макс}
    imax:=i;{его индекс}
  end
else if (A[i]<Min) then
  begin
    Min:=A[i];{мин}
    imin:=i;{его индекс}
  end;
writeln('Max=',Max:0:2,' index=',imax);{здесь не обязательно указывать количество позиций под число, т.к. оно одно}
writeln('Min=',Min:0:2,' index=',imin);
writeln('Sortirovka:');
if imin<imax then {если минимальный левее}
  begin {обменная сортировка-"пузырьком"}
   for i:=imin+1 to imax-2 do{от элемента за мин до макс-2}
   for j:=i+1 to imax-1 do{от следующего элемента до макс-1}
   if a[i]>a[j] then{если текущий элемент больше встреченного, то}
     begin
       x:=a[i];{запомним}
       a[i]:=a[j];{на его место потавим встреченный меньше его}
       a[j]:=x;{на новое место текущий}
     end;
   for i:=1 to n do
   write(a[i]:6:2); {выводим результат}
  end
else if imin>imax then {если макс левее}
  begin
   for i:=imax+1 to imin-2 do{тоже}
   for j:=i+1 to imin-1 do
   if a[i]<a[j] then{только вперед переставляем которые больше-убывание}
     begin
       x:=a[i];
       a[i]:=a[j];
       a[j]:=x;
     end;
   for i:=1 to n do
   write(a[i]:6:2);
  end;
readln
end.

Leave a Comment

− 7 = 1