Примеры программ на языке QBASIC

Определение максимальной группы единиц в двоичном числе


REM Определение максимальной группы единиц в двоичном числе
DECLARE FUNCTION MaxBits! (N&, s$)
CLS
INPUT "Введите целое число : ", M&
k% = MaxBits(M&, a$)
PRINT "Двоичное представление этого числа :"
PRINT a$
PRINT "Максимальное число подряд стоящих единиц = "; k%
END

FUNCTION MaxBits (N&, s$)
REM Перевод числа N в двоичное символьное представление
REM Поиск самой длинной группы единиц (MaxBits = длина)
IF N& = 0 THEN MaxBits = 0: s$ = "0": EXIT FUNCTION
FOR j = 0 TO 31: ' Формирование двоичного числа в строке s$
  IF N& AND &H1 THEN
    kBits = kBits + 1: ' Подсчет подряд идущих единиц
    IF kBits > max THEN max = kBits: ' Запомнили максимум
    s$ = "1" + s$: ' Приписали очередную единицу
  ELSE
    kBits = 0: ' Сброс счетчика при встрече нуля
    s$ = "0" + s$: ' Приписали очередной нуль
  END IF
  N& = N& \ 2: ' Сдвиг на один разряд вправо
NEXT j
MaxBits = max
END FUNCTION