|
|
|
| У меня есть пример кода, то есть данного скрипта, но я хочу попробовать сделать сам и с нуля. Хотел бы услышать примерный алгоритм что ли, ну и как что должно быть. Подскажите пожалуйста. | |
|
|
|
|
|
|
|
|
для: cheops
(27.11.2011 в 00:02)
| | Спасибо ) но там есть только готовое решение, а мне бы так, чтобы хотя бы описали, как должно рабоать.. | |
|
|
|
|
|
|
|
для: Belkin
(27.11.2011 в 07:15)
| | Вот как раз не глядя в ту статью, как бы я писал....
Для начала разбил бы число на группы по 3 знака от конца, чтоб разделить на еденицы, тысячи, миллионы и т.д. 2306721 => 2,306,721
От этого будет зависеть род склонения, т.е. "ДВЕ тысячи" или "ДВА миллиона".
Затем пригодится подфункция, которая будет принимать число длинной не более трех знаков и род числительного (М,Ж), и выдавать переведенные в слова эти три цыфры.
Т.е. первая функция передает во вторую трехразрядные числа и дописывает к ответу название данного блока. При дописывании названия нужно также анализировать последние две цыфры текущего блока, чтоб правильно склонять размерность: "11 миллионОВ", "2 миллионА" и т.п.
А вторая функция поразрядно разбирает переданное ей числительное и возвращает результат склоняя числительные: "восемьсот двадцать ДВА", "восемьсот двадцать ДВЕ" и т.п.
Также можно разделить вторую функцию на две подфункции: Первая обрабатывает только первую цыфру, т.к. она не будет склоняться: сто, двести и т.д. и вообще ее может не быть, А вторая уже разбирает числа от 0 до 99.
Как-то так. | |
|
|
|
|
|
|
|
для: Belkin
(27.11.2011 в 07:15)
| | Уточнение. Родов должно быть 3. Хотя числительные и бывают только М и Ж, но изначально вы же будете переводить для описания какого-то существительного, поэтому, чтобы не было "сто двадцать одна окно", средний род тоже нужно описать. | |
|
|
|
|
|
|
|
для: Sfinks
(27.11.2011 в 15:18)
| | Большое спасибо )
Будет над чем подумать! | |
|
|
|