Сгенерировать числа и разделить на четные и нечетные - Turbo Pascal
Формулировка задачи:
Здравствуйте.
Надо создать программу, где будет выводить определенное количество рандомных чисел. Потом эти рандомные числа делятся на четные и нечетные. Четные сортируются по возрастанию, нечетные по убыванию. Пытался сделать, психанул от того, что было не правильно и все стер. Нужна помощь.
Решение задачи: «Сгенерировать числа и разделить на четные и нечетные»
textual
Листинг программы
var arAll, arOdd, arEven: Array[Byte] Of ShortInt; i, j, nAll, nOdd, nEven: Byte; swap: ShortInt; isSorted: Boolean; begin Randomize; repeat Write('Input n(1..255)='); ReadLn(nAll); until (nAll > 0); nOdd := 0; nEven := 0; Write(' All:'); for i := 0 to nAll - 1 do begin arAll[i] := Random(199) - 99; Write(arAll[i]:4); if (Odd(arAll[i])) then begin arOdd[nOdd] := arAll[i]; Inc(nOdd); //не хватает в паскале инкремента end else begin arEven[nEven] := arAll[i]; Inc(nEven); end; end; WriteLn; Write(' Odd:'); if (nOdd > 0) then begin for i := 0 to nOdd - 1 do Write(arOdd[i]:4); isSorted := (nOdd = 1); while (Not isSorted) do begin isSorted := True; for i := 0 to nOdd - 2 do if (arOdd[i] < arOdd[i + 1]) then begin swap := arOdd[i]; arOdd[i] := arOdd[i + 1]; arOdd[i + 1] := swap; isSorted := False; end; end; WriteLn; Write('s Odd:'); for i := 0 to nOdd - 1 do Write(arOdd[i]:4); end else Write('EMPTY!'); WriteLn; Write(' Even:'); if (nEven > 0) then begin for i := 0 to nEven - 1 do Write(arEven[i]:4); isSorted := (nEven = 1); while (Not isSorted) do begin isSorted := True; for i := 0 to nEven - 2 do if (arEven[i] > arEven[i + 1]) then begin swap := arEven[i]; arEven[i] := arEven[i + 1]; arEven[i + 1] := swap; isSorted := False; end; end; WriteLn; Write('sEven:'); for i := 0 to nEven - 1 do Write(arEven[i]:4); end else Write('EMPTY!'); end.
Объяснение кода листинга программы
- Переменная
arAll
инициализируется как массив коротких целых чисел размеромnAll
. - Переменная
arOdd
инициализируется как массив коротких целых чисел размеромnOdd
, который будет использоваться для хранения нечетных чисел. - Переменная
arEven
инициализируется как массив коротких целых чисел размеромnEven
, который будет использоваться для хранения четных чисел. - Цикл
repeat
используется для повторного запроса числа от пользователя до тех пор, пока число больше нуля. - Внутри цикла
repeat
переменнаяnAll
инициализируется как результат чтения числа с консоли. - Переменные
nOdd
иnEven
инициализируются как 0. - В каждой итерации цикла
for
переменнаяarAll[i]
инициализируется случайным числом от 0 до 99. - Если число
arAll[i]
является нечетным, то оно записывается вarOdd[nOdd]
. - Переменная
nOdd
увеличивается на 1. - Если число
arAll[i]
является четным, то оно записывается вarEven[nEven]
. - Переменная
nEven
увеличивается на 1. - После завершения цикла
for
выводится сообщение о том, сколько чисел было введено. - Затем выводится сообщение о том, сколько нечетных чисел было введено.
- Выводится сообщение о том, сколько четных чисел было введено.
- Если
nOdd
илиnEven
равны 0, то выводится сообщениеEMPTY!
. - В конце кода выводится сообщение с числами из
arOdd
иarEven
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д