Сгенерировать числа и разделить на четные и нечетные - 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.

Объяснение кода листинга программы

  1. Переменная arAll инициализируется как массив коротких целых чисел размером nAll.
  2. Переменная arOdd инициализируется как массив коротких целых чисел размером nOdd, который будет использоваться для хранения нечетных чисел.
  3. Переменная arEven инициализируется как массив коротких целых чисел размером nEven, который будет использоваться для хранения четных чисел.
  4. Цикл repeat используется для повторного запроса числа от пользователя до тех пор, пока число больше нуля.
  5. Внутри цикла repeat переменная nAll инициализируется как результат чтения числа с консоли.
  6. Переменные nOdd и nEven инициализируются как 0.
  7. В каждой итерации цикла for переменная arAll[i] инициализируется случайным числом от 0 до 99.
  8. Если число arAll[i] является нечетным, то оно записывается в arOdd[nOdd].
  9. Переменная nOdd увеличивается на 1.
  10. Если число arAll[i] является четным, то оно записывается в arEven[nEven].
  11. Переменная nEven увеличивается на 1.
  12. После завершения цикла for выводится сообщение о том, сколько чисел было введено.
  13. Затем выводится сообщение о том, сколько нечетных чисел было введено.
  14. Выводится сообщение о том, сколько четных чисел было введено.
  15. Если nOdd или nEven равны 0, то выводится сообщение EMPTY!.
  16. В конце кода выводится сообщение с числами из arOdd и arEven.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.167 из 5
Похожие ответы