Консультация № 135248
04.05.2008, 07:18
0.00 руб.
0 2 2
Здравствуйте! Нужна помощь в решении задачи:
Дан массив целых чисел, содержащий 15 элементов. Записать в этом
же массиве сначала все кратные трем числа, а затем все остальные,
сохраняя порядок их следования.
Решить задачу нужно самым простым способом, используя 2-3 подпрограммы. Заранее спасибо.

Обсуждение

Неизвестный
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.
Неизвестный
09.05.2008, 01:29
общий
это ответ
Здравствуйте, Десятова Ксения Сергеевна!
Программка в приложении. Работает. Желаю успеха.

Приложение:
program massiv;uses crt;const N=15;type Tmassiv=array[1..N] of integer;procedure rand(var px:Tmassiv);var i:byte;begin randomize; for i:=1 to N do px[i]:=random(100);end;procedure output(mes:string;var px:Tmassiv);var i:byte;begin writeln; writeln(mes); writeln; write(‘ { ‘); for i:=1 to N do write(px[i],‘ ‘); writeln(‘}‘); writeln;end;procedure sort(var px:Tmassiv; var py:Tmassiv);var i,j:byte;begin j:=1; for i:=1 to N do if (px[i] mod 3)=0 then begin py[j]:=px[i]; j:=j+1; end; for i:=1 to N do if (px[i] mod 3)<>0 then begin py[j]:=px[i]; j:=j+1; end;end;function quit:boolean;var ans:char;begin writeln; writeln; write(‘ Again ? (y/n) ---> ‘); readln(ans); if ans=‘n‘ then quit:=true else quit:=false;end;var x,y:Tmassiv;begin repeat clrscr; rand(x); output(‘ The initial array is :‘,x); sort(x,y); output(‘ The resorted array is :‘,y); writeln; writeln(‘ The program is completed !‘); until quit;end.
Форма ответа