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

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


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

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

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

FUNCTION NumToStr$ (m%, num1$(), num2$(), num3$())
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