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

Формирование словесного описания числа


REM Формирование словесного описания числа
DECLARE FUNCTION NumToStr$ (m%)
CLS
DATA "нуль","один","два","три","четыре","пять","шесть","семь"
DATA "восемь","девять","десять","одиннадцать","двенадцать"
DATA "тринадцать","четырнадцать","пятнадцать","шестнадцать"
DATA "семнадцать","восемнадцать","девятнадцать"
DIM SHARED num1$(20)
FOR k = 0 TO 19: READ num1$(k): NEXT k

DATA "двадцать ","тридцать ","сорок ","пятьдесят "
DATA "шестьдесят ","семьдесят ","восемьдесят ","девяносто "
DIM SHARED num2$(8)
FOR k = 0 TO 7: READ num2$(k): NEXT k

DATA "","сто ","двести ","триста ","четыреста ","пятьсот "
DATA "шестьсот ","семьсот ","восемьсот ","девятьсот "
DIM SHARED num3$(10)
FOR k = 0 TO 9: READ num3$(k): NEXT k
INPUT "Введите целое число от -999 до 999: ", n%
PRINT n%; "= "; NumToStr$(n%)
END

FUNCTION NumToStr$ (m%)
  IF m% = 0 THEN NumToStr$ = num1$(0): EXIT FUNCTION
  IF m% < 0 THEN m% = -m%: Res$ = "минус ": ' Учет знака числа
  dig100% = m% \ 100: ' Выделение сотен
  Res$ = Res$ + num3$(dig100%): ' Приклеили обозначение сотен
  m% = m% - 100 * dig100%: ' Удаление обработанных сотен
  IF m% = 0 THEN NumToStr$ = Res$: EXIT FUNCTION
  IF m% < 20 THEN NumToStr$ = Res$ + num1$(m%): EXIT FUNCTION
  dig10% = m% \ 10: ' Выделение десятков, если dig10 >=20
  Res$ = Res$ + num2$(dig10% - 2): ' Приклеили обозначение десятков
  dig1% = m% MOD 10
REM Если в числе присутствуют ненулевые разряды единиц
  IF dig1% <> 0 THEN Res$ = Res$ + num1$(dig1%)
  NumToStr$ = Res$
END FUNCTION