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

Поиск симметричного разложения числа


REM Поиск симметричного разложения числа
DECLARE FUNCTION perevod! (n%, p%, a%())
DECLARE FUNCTION proba! (a%(), k%)
DIM a%(16)
CLS
INPUT "Введите число из дипазона [0,30000] : ", n%
FOR p% = 2 TO n% - 1
  k% = perevod(n%, p%, a%()): ' Перевод в p-ричную систему
  IF proba(a%(), k%) <> 0 THEN
     PRINT "Симметричное разложение с минимальным основанием : "
     FOR i = 0 TO k% - 1
       PRINT TAB(0); a%(i); "*"; p%; "^"; k% - i; "+";
     NEXT i
     PRINT : PRINT a%(0); "*"; p%; "^"; 0
     END
  END IF
NEXT p%
END

FUNCTION perevod (n%, p%, a%())
REM Перевод числа n в систему с основанием p
REM Цифры p-ричного числа запоминаются в массиве a
m% = n%
FOR i = 0 TO 15
  a%(i) = m% MOD p%
  m% = (m% - a%(i)) / p%
  IF m% = 0 THEN perevod = i: EXIT FUNCTION
NEXT i
END FUNCTION

FUNCTION proba (a%(), k%)
REM Анализ числа, представленного k цифрами в массиве a
REM Если число - палиндром, то proba=1
proba = 1
FOR i = 0 TO k% / 2
  IF a%(i) <> a%(k% - i) THEN proba = 0: EXIT FUNCTION
NEXT i
END FUNCTION