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

type tmasi=array[1..100] of integer;
var a:tmasi; n,i,j,pos,kl:byte; pr:boolean;
(*процедура ввода*)
procedure pr_wod(var n:byte; var mas:tmasi; var kl:byte);
var i:byte;
begin
   writeln('размерность массива');
   readln(n);
   (*контроль значения переменной*)
   while n>100 do
   begin
     writeln('неверно ввёл попробуй ещё раз');
     readln(n);
   end;
   kl:=0;
     for i:=1 to n do
     begin
       repeat
       writeln('введи ',i,' элемент массива');
       readln(mas[i]);
       until not((kl=1)and(mas[i]=0));
       if mas[i]=0 then kl:=1;
     end;
end;
(*процедура вывода*)
procedure pr_out(n:byte; mas:tmasi);
var i:byte;
begin
  writeln('массив');
  for i:=1 to n do
  write(mas[i]:6);
  writeln;
end;
begin
  pr_wod(n,a,kl);
  if kl=0 then begin
                  writeln('В массиве отсутствует ноль');
                  exit;
                end;
  pr_out(n,a);
  for i:=1 to n do
  if a[i]=0 then begin pos:=i;break;end;
  pr:=true;
  while pr do
  begin
    pr:=false;
    if pos>2 then
    for i:=1 to pos-2 do
    if a[i]<a[i+1] then begin
             a[i]:=a[i]+a[i+1];
             a[i+1]:=a[i]-a[i+1];
             a[i]:=a[i]-a[i+1];
             pr:=true;
                        end;
  end;
  j:=0;
  if pos<n-1 then for i:=1 to (n-pos) div 2 do
                  begin
                     a[pos+i]:=a[pos+i]+a[n-i+1];
                     a[n-i+1]:=a[pos+i]-a[n-i+1];
                     a[pos+i]:=a[pos+i]-a[n-i+1];
                  end;
  pr_out(n,a);
end.

Leave a Comment

57 − = 50