Сгенерировать числа и разделить на четные и нечетные - 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
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д