Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Сортировка массива

Автор: FENIX 17.03.2005 21:50

Попросили помочь в написании программы. Но из-за катастрофической нехватки времени (своих прог писать тонну + они гораздо серьезнее) не могу сосредоточиться. прошу помощи smile.gif

Задание: дан массив n=20.
Отсортировать отрицательные числа по убыванию, положительные числа перенести в конец и отсортировать по возрастанию.
Метод сортировки - на выбор.
Заранее спасибо.

Автор: FreeMan 17.03.2005 21:57

тысячи раз было решено. пользуй поиск.

Автор: FENIX 17.03.2005 22:17

Цитата(FreeMan @ 17.03.05 17:57)
тысячи раз было решено. пользуй поиск.


Не подскажешь, как лучше сформулировать запрос?

Автор: klem4 17.03.2005 22:28

вот так : http://forum.pascal.net.ru/index.php?showtopic=3065 angry.gif

Автор: volvo 17.03.2005 22:29

Ищи слово "перенести".

Автор: FENIX 17.03.2005 22:43

Всем спасибо, злиться не надо ;)

Автор: virt 18.03.2005 0:10

;)
эта прога пишется за 7-12 минут ,я думаю на написание поста ушло не многим меньше ,что же это за гораздо серьезные проги такие?

Автор: Romtek 18.03.2005 2:21

http://forum.sources.ru/index.php?showtopic=59376

Автор: FENIX 21.03.2005 23:39

Как только нашлось время, сделал smile.gif
Выкладываю код - может, кому пригодится.
:low:

Код
Program Sort_Move;
Uses Crt;

var
A : array [1..20] of integer;
i, j, n, t : integer;

BEGIN

  ClrScr;
  write('Vvedite N = ');
  readln(n);
  writeln;
  Writeln('Vvedite isxodnyi massiv:');

  For i := 1 to n do
  begin
     write('A[',i,']=');
     readln(A[i]);
  end;

  For i := 1 to n do
     If A[i] > 0 then
     For j := n downto i+1 do
     If A[j] < 0 then
     begin
        T := A[i];
        A[i] := A[j];
        A[j] := T;
        break;
     end;

  For i := 1 To n Do
  If A[i] < 0 then
  For j := n DownTo i+1 Do
  If A[j] < 0 then
  If A[i] < A[j] Then
  begin
     T := A[i];
     A[i] := A[j];
     A[j] := T;
  end;

  For i := 1 To n Do
  If A[i] > 0 then
  For j := n DownTo i+1 Do
  If A[j] > 0 then
  If A[i] > A[j] Then
  begin
     T := A[i];
     A[i] := A[j];
     A[j] := T;
  end;

writeln;
Writeln('Massiv posle izmenenya:');
writeln;
For i := 1 to n do
writeln('A[',i,']=',a[i]);
writeln;
readln;

END.