Задача: перевод чисел в текст для банковских чеков и телефонных платежей.
Современные средства безналичного расчета и интернет-оплаты.
Необходимость перевода чисел в текст остается актуальной.
Программа работает с целыми числами до 64 бит.
Промежуток значений симметричен, не включает отрицательные числа.
Наибольшее число в диапазоне: 2^63 - 1, содержит 19 десятичных знаков.
Два варианта: для английских и русских наименований.
Английские наименования проще, русские требуют учета рода и склонения.
Разбиение числа на триады и произношение.
Использование заглавных букв и дефиса для отделения разрядов.
Множественное число не используется для числительных.
Интерфейс для перевода чисел в текст.
Класс для английских наименований.
Статические данные для наименований цифр и валют.
Массив наименований триад.
Константы для денежных единиц и разделителей.
Функция для перевода числа в текст.
Перевод числа в текстовый формат.
Определение количества сотен, десятков и единиц.
Использование массивов для наименований.
Аргумент функции: положительное число.
Переменные для накопления результата.
Использование функции для перевода триад в текст.
Преобразуем число в тип интедж.
Отсекаем текущую триаду, заменяя число остатком от деления.
Делим делитель на тысячу для соответствия предыдущей триаде.
Переходим к следующей итерации с делителем равным значению предыдущей триады.
Текущее число уменьшается, и по завершению цикла оно будет меньше тысячи.
Если число равно нулю, используем строку "zero".
Приписываем название денежной единицы.
Если число содержится в массиве синла, выбираем элемент массива каси сином ноль.
В противном случае берем элемент массива каси сином один.
В русском языке числительные, оканчивающиеся на один, но не на одиннадцать, используются в именительном падеже единственного числа.
Числительные, оканчивающиеся на два, три или четыре, используются в родительном падеже единственного числа.
В остальных случаях используется родительный падеж множественного числа.
Класс содержит склоненные имена и метод для наименования триады.
Используются условия для выбора падежа в зависимости от количества единиц и десятков.
Все слова, кроме первого, пишутся с прописной буквы.
Массив трас содержит данные класса неймс-декла.
Массив для сотен и феминин содержит слова одна и две.
Функция для текстового формата числа имеет дополнительный аргумент.
Переменная на всегда неотрицательна.
Элементы массива трас обрабатываются в обратном порядке.
В случае отрицательного числа приписывается константа "минус".
Полученная строка дополняется названием денежной единицы.
Используется метод с одним аргументом для перевода числа в формат и.
Название денежной единицы отделяется от предшествующего текста.