В массиве М каждый элемент равен: 0, 1, 2. Переставить элементы массива так, чтобы сначала располагались все единицы, затем все двойки и, наконец, все нули
Категория: Delphi/Pascal
2012-01-16 21:12:52
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.
Поделиться: