zadach507.PAS

{* Задача 507 *}

Unit ZADACH507;
Interface
Implementation
Begin
 writeln('Дано натуральное число n, действительные числа a1,...,an. Преобразовать последовательность a1,...,an, расположив в начале отрицательные члены, а затем - неотрицательные. При этом: а) Порядок как отрицательных, так и неотрицательных членов сохраняется прежним; б) Порядок отрицательных членов изменяется на обратный, а порядок неотрицательных членов сохраняется прежним; в) Порядок отрицательных членов сохраняется прежним, а порядок неотрицательных членов изменяется на обратный; г) Порядок и тех и других чисел меняется на обратный.');
End.

Program zadach507;

Uses zadach507.pas; {* Эту строку можно удалить *}
{Дано натуральное число n, действительные числа a1,..., an. Преобразовать    последовательность a1,..., an, расположив в начале отрицательные члены,    а затем - неотрицательные. При этом :    а) Порядок как отрицательных, так и неотрицательных членов сохраняется       прежним;
б) Порядок отрицательных членов изменяется на обратный, а порядок       неотрицательных членов сохраняется прежним;
в) Порядок отрицательных членов сохраняется прежним, а порядок       неотрицательных членов изменяется на обратный;
г) Порядок и тех и других чисел меняется на обратный.  }

Var {* Необходимые переменные *}
  n : byte; {Размер последовательности}
  {Исходная последовательность}
  A : Array[0..255] Of real;
  B : Array[0..255] Of real;
  C : Array[0..255] Of real;
  D : Array[0..255] Of real; {Последовательности, преобразованные                                      по ссответствующим алгоритмам}
  i : byte; {Счётчик цикла}
  {Описание алгоритмов, реализующих пункты задания}
Var {* В работе нам потребуются переменные: *}
  mas : Array Of real); {Сохраняет порядок следования чисел}
Var {Счётчик цикла}
  Ind          : byte; {Индекс элемента для вставки}
  TmpMas       : Array[0..255] Of real;
  Begin
  Ind := 0;
For i := 0 To n Do {* Переменная i увеличивается с 0 до n *}
  TmpMas[i]; {Расстановка отрицательных чисел}
For i := 0 To n Do {* Увеличиваем i от 0 до n с шагом 1 *}
  If TmpMas[i] = 0 Then
    Begin
mas[Ind]; {Item_a}
{-------------------}
Var {* Объявление переменных *}
  mas : Array Of real); {Обратный порядок следования отрицательных чисел}
Var {Счётчик цикла}
  Ind          : byte; {Индекс вставляемого элемента}
  TmpMas       : Array[0..255] Of real;
  Begin
  Ind := 0;
For i := 0 To n Do {* Увеличиваем i от 0 до n с шагом 1 *}
  TmpMas[i]; {Расстановка отрицательных чисел}
For i := n Downto 0 Do
  If TmpMas[i] = 0 Then
    Begin
mas[Ind]; {Item_b}
{-------------------}
Var {* Необходимые переменные *}
  mas : Array Of real); {Обратный порядок следования неотрицательных чисел}
Var {Счётчик цикла}
  Ind          : byte; {Индекс вставляемого элемента}
  TmpMas       : Array[0..255] Of real;
  Begin
  Ind := 0;
For i := 0 To n Do {* Увеличиваем i от 0 до n с шагом 1 *}
  TmpMas[i]; {Расстановка отрицательных чисел}
For i := 0 To n Do {* Переменная i увеличивается с 0 до n *}
  If TmpMas[i] = 0 Then
    Begin
mas[Ind]; {Item_c}
{-------------------}
Var {* Объявление переменных *}
  mas : Array Of real); {Обратный порядок следования всех чисел}
Var {Счётчик цикла}
  Ind    : byte; {Индекс вставляемого элемента}
  TmpMas : Array[0..255] Of real;
  Begin
  Ind := 0;
For i := 0 To n Do {* Цикл для i => [0 .. n] *}
  TmpMas[i] := Mas[i]; {Расстановка отрицательных чисел}
For i := n Downto 0 Do
  If TmpMas[i] = 0 Then
    Begin
mas[Ind] := TmpMas[i];
Dec(Ind) {* Вычтем из Ind единицу *}
End

End{Item_a}
{---------------------}
Begin {Главная часть}
{Вводим размер массива}
write('Укажите размер массива n: ');
readln(n); {Вводим массив}
For i := 0 To n Do {* Цикл для i => [0 .. n] *}
  Begin
write('Введите элемент mas[', i, ']=');
readln(mas[i])
End{Готовим массивы}
A := mas;
B := mas;
C := mas;
D := mas; {Применяем алгоритмы}
Item_a(A);
Item_b(B);
Item_c(C);
Item_d(D); {Распечатыванм результаты}
For i := 0 To n Do {* Цикл для i => [0 .. n] *}
  writeln('A[', i, ']=', A[i] : 0:3, 'B[' : 5, i, ']=', B[i] : 0:3,              'C[' : 5, i, ']=', C[i] : 0:3, 'D[' : 5, i, ']=', D[i] : 0:3)
End..