В массиве М каждый элемент равен: 0, 1, 2. Переставить элементы массива так, чтобы сначала располагались все единицы, затем все двойки и, наконец, все нули

code: #pascal
Program PascalGuru;
Uses Crt;
Type om = array [1..256] of Integer;
Var A { данный целочисленный массив }: om;
 i, { индекс массива, номер элемента массива}
 N, { длина массива, количество элементов в массиве }
 s0, { количество нулей }
 s1, { количество единиц }
 s2 { количество двоек }
 : Integer;
 
Procedure print_om (
 x { массив для печати }
 : om;
 k { длина массива }
 : Integer
 );
 { Печатает на экран монитора все элементы массива в строчку.
 Начало массива '(', его окончание ')'
}
 
 var j : Integer; { номер элемента массива }
 
begin
 Write ('(');
 for j := 1 to k do
 if j <> k
 then
 write (x [j], ', ')
 else
 write (x [j]);
 WriteLn (')');
end;
 
Begin
 ClrScr;
 s0 := 0; { инициализация переменной }
 s1 := 0;
 s2 := 0;
 { Ввод массива }
 Write ('Сколько элементов в массиве: ');
 ReadLn (N);
 
 WriteLn;
 WriteLn ('Введите элементы массива: ');
 
 for i := 1 to N do
  begin
  Write (i, ') ');
  ReadLn (A [i]);
  case A [i] of
  0 : Inc (s0);
  1 : Inc (s1);
  2 : Inc (s2);
  else
  begin
   WriteLn;
   WriteLn ('Неверен ввод данных');
   WriteLn ('Прекращаю работу');
   ReadLn;
   Exit;
  end;
 end;
end;
WriteLn;
 
print_om (A, N);
 
{ Подсчет количества нулей, единиц и двоек в массиве, а
также выход из программы, если неверно введены данные
}
 
 
{ Заполнение старого массива так, чтобы сначала шли все
единицы, затем все двойки и, наконец, все нули
}
 for i := 1 to s1 do
 A [i] := 1;
 for i := s1 + 1 to s1 + s2 do
 A [i] := 2;
 for i := s1 + s2 + 1 to N do
 A [i] := 0;
 
{ Вывод на экран получившегося массива
}
 WriteLn;
 WriteLn ('После перестановки элементов массив станет таким: ');
 WriteLn;
 print_om (A, N);
 
 readln;
End.      
Поделиться:

Похожие статьи: