G-MINOR Ответов: 2

Qbasic генератор четных или нечетных чисел. Тут есть подвох.


Поэтому у меня есть вопрос к моему классу программирования. Вопрос Ниже. Не могу понять, как это сделать. Мой учитель сказал использовать массив, но я не знаю, как это сделать.


Напишите программу, которая выбирает 20 случайных чисел от 10 до 99 включительно. Затем числа распечатываются со всеми четами в одной строке и всеми коэффициентами в другой. Вывод должен выглядеть следующим образом:

Странно: 49 25 21 33 63 77 29 77 27 43
Даже: 66 56 18 24 28 70 56 62 48 76

Так вот как сейчас выглядит моя программа.

РАНДОМАЙЗ ТАЙМЕР

Для x = от 1 до 20
z = INT(RND * 89) + 10
Если z MOD 2 = 0 GOTO 7 ELSE GOTO 12
7 если x = 1, то
Печатать "даже: "; з;
ЕЩЁ
Печать z;
КОНЕЦ, ЕСЛИ
12 если x = 1, то
Печать "странно: "; з;
ЕЩЁ
Печать z;
КОНЕЦ, ЕСЛИ
Далее х
КОНЕЦ

Не знаю, почему это не работает. Я на самом деле не так хорошо знаком с Гото, так что, вероятно, делаю там что-то не так.

Результат должен выглядеть точно так же, как и в вопросе. Таким образом, процессор должен печатать нечетные числа в первой строке и четные во второй строке с их номерами справа.

Если это возможно, я хотел бы получить определение массива и решение, а также мое текущее решение без массива.

Что я уже пробовал:

Я пробовал массивы и Гото, но я просто к основному для этого вопроса.

2 Ответов

Рейтинг:
1

Garth J Lancaster

Я бы выбросил Гото и переосмыслил подход .. как насчет

1) генерация массива из 20 случайных чисел

RANDOMIZE TIMER
' Declare an array to hold all the random numbers
Dim AllNumbers As INTEGER
' Generate 20 Random numbers in the correct range
FOR x = 1 TO 20
    z = INT(RND * 89) + 10
    AllNumbers(x) = z
NEXT


2) есть два способа, которыми вы можете пойти отсюда - либо две подпрограммы, одна для нечетных, одна для четных, либо две петли, одна для печати шансов, одна для печати четных ... вот пример

' Print the ODD's 
PRINT "ODD:";
' Loop Over the Array
FOR x = 1 to 20
    IF AllNumbers(x)  MOD 2 != 0 THEN PRINT AllNumbers(x);
NEXT
PRINT


"Даже" похоже ... (Я не могу вспомнить, как "перейти на новую строку" в печатном заявлении, вам придется посмотреть, есть ли в нем точки с запятой или нет) ... и вам, скорее всего, понадобятся пробелы между числами, опять же, что-то, что вы можете найти


Рейтинг:
0

Patrice T

Я не использовал QBasic в течение последних 20 лет или более.

Просто совет: используйте отладчик,и вы увидите, что ваш код работает.

Ваш код не соответствует оператору и нуждается в полной переписке. См. раздел Использование массивов.