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.