Практика программирования (Бейсик, Си, Паскаль)


Задачи,советы и ответы - часть 18


PRINT n%;"= ";NumToStr$(n%,numl$(),num2$(),num3$())

END

FUNCTION NumToStr$(m%,numl$(),num2$() , num3$())

IF m%=0 THEN NumToStr$=numl$(0): EXIT FUNCTION

IF m%<0 THEN m%=-m%: Res$="минус " : 'Учет знака числа

dlg100%=m%\100 : ' Вьщеление сотен

Res$=Res$+num3$(dig100%) /Приклеили обозначение сотен

m%=m%-100*dig100% : "Удаление обработанных сотен

IF m%=0 THEN NumToStr$=Res$: EXIT FUNCTION

IF m%<20 THEN NumToStr$=Res$+numl$ (m%) : EXIT FUNCTION

dig10%=m%\10 :' Вьщелеыие десятков, если dig10 >=20

Res$=Res; +num2$ (diglO%-2)

digl%=m% MOD 10 :' Приклеили обозначение десятков

КЕМ Если в числе присутствуют ненулевые разряды единиц

IF digl%<>0 THEN Res$=Res$+numl$(digl%)

NumToStr$=Res$

END FUNCTION

Программа 2_11a.bas

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

DECLARE FUNCTION NumToStr$(m%)

CLS

DATA "нуль","один","два","три","четыре","пять","шесть", "семь"

DATA "восемь","девять","десять","одиннадцать","двенадцать"

DATA "тринадцать","четырнадцать","пятнадцать","шестнадцать"

DATA "семнадцать","восемнадцать","девятнадцать"

DIM SHARED numl$(20)

FOR k=0 TO 19: READ numl$(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%) '




- Начало -  - Назад -  - Вперед -