(Не)простая последовательность. Найти ошибку в коде - QBasic

Формулировка задачи:

Задача Написать программу, которая распечатывает 20 членов случайной последовательности, обладающей следующими свойствами 1. последовательность состоит из чисел 1, 2, 3, 4 2. числа 1 и 3 не могут стоять рядом 3. числа 2 и 4 тоже не могут стоять рядом 4. каждое число может стоять в последовательности не более трёх раз подряд пример 1, 1, 1, 2, 3, 4, 4, 3, 3, 2, 1, 1, 4, 4, 4, 1, 4, 1, 2, 2 программа работает не совсем верно: она может выдать и 4 числа подряд. Проблему не решает даже второй счётчик (k, k2 - счётчики призванные контролировать повторение чисел)... подумал: может поставить счётчики на каждое число? нет, глупо, но где-то прокол?
CLS
RANDOMIZE TIMER
n1 = INT(4 * RND) + 1
PRINT n1;
k = 1
k2 = 1
 
FOR i = 1 TO 19
   DO
      n2 = INT(4 * RND) + 1
      IF n1 = n2 AND k < 3 AND k2 < 3 THEN
         k = k + 1
         k2 = k2 + 1
      END IF
   LOOP UNTIL (ABS(n1 - n2) MOD 2 OR n1 = n2) AND k <= 3
   
   PRINT n2;
   k2 = k
   k = 1
   n1 = n2
NEXT
END


textual

Код к задаче: «(Не)простая последовательность. Найти ошибку в коде - QBasic»

DIM i AS LONG, n AS LONG, n0 AS LONG, k AS LONG
RANDOMIZE TIMER
n = INT(RND * 4 + 1)
PRINT n;
FOR i = 2 TO 20
    n0 = n
    DO
        n = INT(RND * 4 + 1)
    LOOP WHILE ABS(n - n0) = 2 OR (n = n0 AND k >= 2)
    IF n = n0 THEN k = k + 1 ELSE k = 0
    PRINT n;
NEXT i
PRINT
Эта работа вам не подошла?

Вы всегда можете заказать любую учебную работу у наших авторов от 20 руб.


СДЕЛАЙТЕ РЕПОСТ

14   голосов, оценка 3.714 из 5

Источник
Похожие ответы
Для поиска решения или похожих решений вы можете воспользоваться "Поиском по сайту" или "Поиском по разделу"
Поиск по сайту