• Решение должно корректно работать в PascalABC.NET, версии не выше 2.2

    Переставить элементы массива так, чтобы сначала располагались нули, затем положительные элементы в порядке возрастания, затем отрицательные элементы в порядке убывания.

Ответы 3

  • Если PascalABC, то можно еще так записать:  var i,j,n,m,k,tmp: integer;    a: array of integer;begin  write('n = ');  readln(n);  setlength(a,n);  randomize();  for i:=0 to n-1 do  begin    a[i]:=random(10)-5;    write(a[i]:3);  end;  writeln;  sort(a);  m:=0;  while a[m]<0 do inc(m);  k:=a.Length-1;  for i:=0 to m-1 do  begin    tmp:=a[0];    for j:=0 to k-i-1 do a[j]:=a[j+1];    a[k-i]:=tmp;  end;  for i:=0 to k do write(a[i]:3);end.       
  • n = 20  3  0  2 -1 -2  4  0  3  1  3 -4  0  2  0 -5 -2 -4 -1  4 -4  0  0  0  0  1  2  2  3  3  3  4  4 -1 -1 -2 -2 -4 -4 -4 -5  - решение на тестовой задаче
  • // PascalABC.NET 3.0, сборка 1128const  nmax=100;var  n,i,j,nn,nz,np,t:integer;  a,an,az,ap:array[1..nmax] of integer;begin  // формируем массив и выводим его  Write('Количество элементов в массиве: '); Read(n);  for i:=1 to n do begin    a[i]:=Random(11)-5;    Write(a[i],' ')    end;  Writeln;  // разбиваем массив на три подмассива  nn:=0; nz:=0; np:=0;  for i:=1 to n do    if a[i]<0 then begin nn:=nn+1; an[nn]:=a[i] end    else      if a[i]=0 then begin nz:=nz+1; az[nz]:=a[i] end      else begin np:=np+1; ap[np]:=a[i] end;  // сортируем массив с отрицательными элементами по убыванию  for i:=1 to nn-1 do    for j:=1 to nn-1 do       if an[j]<an[j+1] then        begin t:=an[j]; an[j]:=an[j+1]; an[j+1]:=t end;  // сортируем массив с положительными элементами по возрастанию  for i:=1 to np-1 do    for j:=1 to np-1 do       if ap[j]>ap[j+1] then        begin t:=ap[j]; ap[j]:=ap[j+1]; ap[j+1]:=t end;  // формируем новое содержимое массива a  i:=0;  for j:=1 to nz do begin i:=i+1; a[i]:=az[j] end;  for j:=1 to np do begin i:=i+1; a[i]:=ap[j] end;  for j:=1 to nn do begin i:=i+1; a[i]:=an[j] end;  // вывод результата  for i:=1 to n do Write(a[i],' ');  Writelnend.Тестовое решение:Количество элементов в массиве: 151 2 5 0 -5 -3 0 0 1 -4 3 -2 -2 0 -5 0 0 0 0 1 1 2 3 5 -2 -2 -3 -4 -5 -5
    • Автор:

      hamilton
    • 6 лет назад
    • 0
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years