C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Преобразование, Преобразование чисел в буквенную форму
Alisa
Отправлено: 23.09.2005, 13:07


Дежурный стрелочник

Группа: Участник
Сообщений: 33



Добрый день!

Надо написать программку, которая введенное число могла преобразовать в буквенную форму.
Например: пользователь ввел "44 рубля 55 копеек", а программа должна выдать "сорок четыре рубля пятьдесят пять копеек".

Помогите, пожалуйста, не знаю с какой стороны подойти к этой задаче.

Заранее спасибо.
olegenty
Отправлено: 23.09.2005, 13:24


Ветеран

Группа: Модератор
Сообщений: 2412



что-то такое было в RxLib
Alisa
Отправлено: 23.09.2005, 13:29


Дежурный стрелочник

Группа: Участник
Сообщений: 33



QUOTE (olegenty @ 23/09/2005, 13:24)
что-то такое было в RxLib

А поточнее не подскажите?
** full_lamer
Отправлено: 23.09.2005, 13:29


Не зарегистрирован







Во-первых определитесь с вводом, как будет представлена входная информация: "44,55" — анализировать сразу числа или "44 рубля 55 копеек" — выделить числа и потом начать анализ.
Далее организация массивов для единиц:
CODE
{"", "один", "два", ... "девять"};

и копеек:
CODE
{"", "одна", "две", ... "девять"};

Соответственно я думаю, что следует расширить единицы до 19... Таким же макаром, сделать десятки и сотни:
CODE
{"", "", "двадцать", ... "девяносто"};

CODE
{"", "сто", "двести", ... "девятьсот"};

И анализировать числа по три разряда: беруться цифры разряда — определяться тысячи,миллионы или сотни, и в соотвествии проставляются постфиксы. Дополнительно введятся постфиксы: рубли, тысячи и миллионы.
CODE
{"", "рубль", "рубля", ... "рублей"};
{"", "тысяча", "тысячи", ... "тысяч"};
{"", "миллион", "миллиона", ... "миллионов"};


Порядок разбора:
0. разбить на части по три цифры от конца;
1. начать наращивание строки с конца;
2. получить следующую триаду;
3. определеить положение триады — проставив соответствующий постфикс;
4. получить очередную цифру триады;
5. расшифровать цифры;
6. конец цикла 4;
7. конец цикла 2;
конец.

avc*
Отправлено: 23.09.2005, 14:02


Не зарегистрирован







Плюс к ** full_lamer — не забыть о роде
доллар и рубль — он
марка и гривна — она
а евро черт знает что smile.gif

(...сколько раз приходилось писать и на разных языках — вставляю как функцию в базу)
Alisa
Отправлено: 23.09.2005, 14:26


Дежурный стрелочник

Группа: Участник
Сообщений: 33



QUOTE (avc* @ 23/09/2005, 14:02)
(...сколько раз приходилось писать и на разных языках — вставляю как функцию в базу)

А можно Вас попросить привести маленький примерчик?
AVC
Отправлено: 23.09.2005, 15:15


Ветеран

Группа: Модератор
Сообщений: 1583



Васик (VBA) устроит?
На С искать надо (черт его знает куда запаковал) — пишу для БД, эти функции на сервере.

Отредактировано AVC — 23/09/2005, 14:15

User Attached Image Скачать файл
propis.rar


Alisa
Отправлено: 23.09.2005, 16:04


Дежурный стрелочник

Группа: Участник
Сообщений: 33



QUOTE (AVC @ 23/09/2005, 15:15)
Васик (VBA) устроит?
На С искать надо (черт его знает куда запаковал) — пишу для БД, эти функции на сервере.

Уважаемый AVC!

Спасибо вам большое!

Но если вдруг нечаянно наткнетесь на Сишную прогу...[B]

Отредактировано Alisa — 23/09/2005, 16:05
Guest
Отправлено: 23.09.2005, 16:10


Не зарегистрирован







То что я вам дал перевести в С займет меньше времени чем поиски по архивам smile.gif . Если в понедельник еще будет актуально — сообщите, переведу.
Alisa
Отправлено: 23.09.2005, 16:13


Дежурный стрелочник

Группа: Участник
Сообщений: 33



Я постараюсь сама перевести... я вижу что это легко...
Но если вдруг что-то неполучиться — обращусь за помощью...

Огромное Вам спасибо!
Valdemar
Отправлено: 26.09.2005, 08:57


Мастер участка

Группа: Участник
Сообщений: 433



Может кому пригодится (функция преобразования числа в строку на С)

User Attached Image Скачать файл
dig2str.h



Вернуться в Вопросы программирования в C++Builder