| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Алгоритмы > Число словами |
| Автор: Сый 26.3.2006, 12:33 |
| Нужен алгоритм, преобразующий число в его словесное представление (например: 123 - "сто двадцать три"). |
| Автор: BSOD 26.3.2006, 13:36 |
| ну проще всего - записать 1 2 3 4 ... 10 20 30 40... 100 200 300 и.т.д. ну а потом из этих записей числа формировать типа 100 + 20 +3 |
| Автор: sergejzr 26.3.2006, 14:06 |
| Развеж это алгоритм? Вообще на форуме уже для нескольких языков писали. Помотри ФАК. |
| Автор: sergejzr 26.3.2006, 14:21 |
| http://forum.vingrad.ru/index.php?showtopic=68978&unread=1&hl= http://forum.vingrad.ru/index.php?showtopic=37143&hl= Например.. |
| Автор: Сый 28.3.2006, 14:01 | ||
| Ну не стал я переделывать готовые алгоритмы. Вобщем, написал я это дело. Программа разбирает число на рязряды. Алгоритм такой:
Как бы теперь этот код переделать с использованием ОТ-ДО, ПОВТОРЯТЬ и т. д., чтобы уменьшить его размер при разборке более крупных чисел? |
| Автор: sergejzr 28.3.2006, 14:14 |
| НАЧАЛО Индекс := 0; ПОКА Число БОЛЬШЕ 0 Цифры[Индекс]=(Число ОСТАТОК 1000) ДЕЛИТЬ 10; Число := Число ДЕЛИТЬ 10; КОНЕЦ; Как на Глаголе писать не знаю |
| Автор: Romikgy 28.3.2006, 14:28 |
| еще приращивать надо |
| Автор: Сый 28.3.2006, 14:39 |
| УКАЗ Индекс := 0; ПОКА Число > 0 ВЫП Цифры[Индекс]:=(Число ОСТАТОК 1000) ДЕЛИТЬ 10; Число := Число ДЕЛИТЬ 10; КОН; Так на Глаголе Но вот насчёт правильности алгоритма есть сомнения. К примеру, если взять 4-х значное число и применить данные действия, получаем: Число = 1234; (Число ОСТАТОК 1000) ДЕЛИТЬ 10 = 234 ДЕЛИТЬ 10 = 23 (а цифра никак не может быть больше 9). |
| Автор: Akina 28.3.2006, 15:59 |
| Сый, может ты все-таки добредешь до ФАКа? или хотя бы в поиске наберешь "число прописью" (или "сумма прописью")? Если скромненько - то по конфе ищи, с размахом - можно сразу в Гугле. Что до алгоритма - он прост. Число делится на группы по три цифры. Каждая группа транслируется в пропись, в зависимости от ее номера берется множитель (тыщ, мульенов - сколь заложишь) и от десятков-единиц этой группы - падеж. Все. |
| Автор: doomik 28.3.2006, 18:33 | ||||
сделал что-то
|
| Автор: Сый 28.3.2006, 18:56 | ||
Всем спасибо, вот кое-что собрал:
Вызов задачи ВТекст с параметром 23543651 выведет на экран следующее: двадцать три миллиона пятьсот сорок три тысячи шестьсот пятьдесят один |
| Автор: Сый 29.3.2006, 13:23 | ||
| Небольшая недоработка: Например, число 2143 будет выведено так: два тысячи сто сорок три Вот код с исправлением (добавлен параметр рода следующего числительного в задачу ВывестиТри и СклонениеЧ):
|