04.05.2008, 08:15
общий
это ответ
Здравствуйте, Десятова Ксения Сергеевна!
Проще всего (с точки зрения логики алгоритма) было бы воспользоваться двумя вспомогательными массивами, но красивее обойтись только основным. Программа в приложении. Первая процедура заполняет массив случайными числами; вторая проводит указанную Вами сортировку. На основную программу остаются лишь очистка экрана, вызов подпрограмм и ожидание, когда пользователь посмотрит результаты и нажмёт клавишу <b>Enter</b>.
Приложение:
Program Pr135248; Uses CRT; Const N = 15; Var Arr: Array[1..N] of Integer; procedure ArrInput; var i: Integer; begin Randomize; WriteLn(‘Исходный случайно заполненный массив:‘); for i := 1 to N do begin Arr[i] := Random(100); { случайные числа от 0 до 99 } Write(Arr[i]:4); end; WriteLn; WriteLn; end; procedure ArrSorted; var Last, tmp, i, j: Integer; begin Last := 0; for i := 1 to N do if Arr[i] mod 3 = 0 then begin inc(Last); tmp := Arr[i]; for j := i downto Last + 1 do Arr[j] := Arr[j - 1]; Arr[Last] := tmp; end; WriteLn(‘Массив после обработки:‘); for i := 1 to N do Write(Arr[i]:4); WriteLn; end; Var i: Integer;Begin ClrScr; ArrInput; ArrSorted; ReadLn;End.