Другие языки программирования и технологии

помогите с написанием программ на паскале

1)отсортировать массив так чтобы сначала шли отрицательные потом нулевые и затем положительные значения(сортировка в порядке ввода). т.е если вводишь массив -3,-5,1,0 то программа сортирует так: -3,-5,0,1 2)вывести на экран сообщение что больше сумма положительных или сумма отрицательных элементов, учесть вариант с равностью значений.
Нафига три? Можно одним обойтись.

j:=1;
{сначала переносим в начало отрицательные}
for i:=1 to n do
if a[ i ] < 0 then begin
b:=a[ i ];
for k:=i downto j do a[k]:=a[k-1];
a[j]:=b;
inc(j);
end;

{затем за ними выстраиваем нулевые}
for i:=j to n do
if a[ i ] = 0 then begin
b:=a[ i ];
for k:=i downto j do a[k]:=a[k-1];
a[j]:=b;
inc(j);
end;
{а положительные автоматом станут в конце}
Max Grom
Max Grom
59 613
Лучший ответ
ну и? первый можно отсортировать просто по возрастанию
скорей всего тут надо использовать три массива для каждого отриц, положит. и нулевых элементов. а потом все объединить в один.
i1,i2,i3 := 1;
repeat
readln(n); {вводим число}
if n < 0 then begin a1[ i2 ] := n; inc(i1); end;
if n = 0 then begin a2[ i2 ] := n; inc(i2); end;
if n > 0 then begin a3[ i3 ] := n; inc(i3); end;
writeln('continue?'); readln(q);
until q = 'n';
k:=1; j := 1;
for i:=j to i1-1 do begin a[ k ] := a1[ i ]; inc(k); inc(j); end;
j := 1;
for i:=j to i2-1 do begin a[ k ] := a2[ i ]; inc(k); inc(j); end;
j := 1;
for i:=j to i3-1 do begin a[ k ] := a3[ i ]; inc(k); inc(j); end;

writeln('всего элементов ' k-1);

сумму думаю сам сможешь найти
Ерлан Бекишев ОГРОМНОЕ спасибо!!!!