Уважаемые форумчане, оцените пожалуйста грамотность решения задания. Имеется ввиду правильно ли спроектировано приложение, грамотно ли использовались используемые библиотеки, а также укажите на наличие "грязи" в решении. То есть, хочется услышать все "ляпы", которые допущены при выполнении задания. А также как бы Вы сами сделали бы такое задание, если бы пришлось его решать.
Само решение(проект и скомпилированный экзешник) выложил здесь
http://files.rsdn.ru/93750/test.rar
Тестовое задание следующее:
Задание: необходимо вывести введенное 10-тичное число словами на русском языке в 8-ми и 10-ной системах. Например.
Вводим: 131
Выводим:
сто тридцать один в десятичной системе;
двести три в восьмеричной системе.
При проектировании подумайте о том, как ваше решение можно было бы локализовать на английский язык (тут обратите внимание, например, на цифру "двести", которая на английском будет состоять из двух слов).
Добавлю небольшой свой комментарий к решению:
Программа может переводить в текстовый формат числа на двух языках — русском и английском. А также конвертировать введеное число в восьмеричную систему счисления.
Программа спроектирована таким образом, что ее можно легко масштабировать.
Создан абстрактный класс Translate_base и от него наследуются классы перевода на разные языки — Translate_rus и Translate_eng. В каждом из этих классов создается объект словаря, который содержит только слова перевода.
Также создан отдельный класс хранения введеного и сконевертированного значения (Storage_Values), а также метод конвертации. Классы перевода являются "друзьями" по отношению к классу хранения чисел.
Максимальное количество порядков, которое может вывести программа ограничена "триллионами". При желании это ограничение можно снять или уменьшить, добавив нужные термины в словарь и в класс перевода (по крайней мере, для русского и английского языков это не составляет труда и делается точно также как и для слов "миллионов", "миллиардов" и т.д.)
Таким образом, для добавления нового языка достаточно создать новый класс словаря и описать для него обработку перевода, аналогично как это сделано для русского и английского языков. Также чтобы добавить перевод числа в другие системы счисления достаточно добавить новую функцию конвертации в класс Storage_Values.
Для использования более привычного интерфейса вывода переведенных значений в текстовом формате, был перегружен оператор <<.
Также использовался механизм исключений для отслеживания исключительных ситуаций и их корректной обработки.
В программе использовались библиотеки STL, Boost и среда разработки VS2008.
05.09.10 15:31: Перенесено модератором из 'C/C++' — Odi$$ey