Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Число прописью. Знаю тема старая, но хотел бы, чтобы объяснили алгоритм )
 
 автор: Belkin   (26.11.2011 в 23:51)   письмо автору
 
 

У меня есть пример кода, то есть данного скрипта, но я хочу попробовать сделать сам и с нуля. Хотел бы услышать примерный алгоритм что ли, ну и как что должно быть. Подскажите пожалуйста.

  Ответить  
 
 автор: cheops   (27.11.2011 в 00:02)   письмо автору
 
   для: Belkin   (26.11.2011 в 23:51)
 

Возможно вас заинтересует тема по ссылке http://softtime.ru/forum/read.php?id_forum=1&id_theme=4540.

  Ответить  
 
 автор: Belkin   (27.11.2011 в 07:15)   письмо автору
 
   для: cheops   (27.11.2011 в 00:02)
 

Спасибо ) но там есть только готовое решение, а мне бы так, чтобы хотя бы описали, как должно рабоать..

  Ответить  
 
 автор: Sfinks   (27.11.2011 в 15:14)   письмо автору
 
   для: Belkin   (27.11.2011 в 07:15)
 

Вот как раз не глядя в ту статью, как бы я писал....
Для начала разбил бы число на группы по 3 знака от конца, чтоб разделить на еденицы, тысячи, миллионы и т.д. 2306721 => 2,306,721
От этого будет зависеть род склонения, т.е. "ДВЕ тысячи" или "ДВА миллиона".
Затем пригодится подфункция, которая будет принимать число длинной не более трех знаков и род числительного (М,Ж), и выдавать переведенные в слова эти три цыфры.
Т.е. первая функция передает во вторую трехразрядные числа и дописывает к ответу название данного блока. При дописывании названия нужно также анализировать последние две цыфры текущего блока, чтоб правильно склонять размерность: "11 миллионОВ", "2 миллионА" и т.п.
А вторая функция поразрядно разбирает переданное ей числительное и возвращает результат склоняя числительные: "восемьсот двадцать ДВА", "восемьсот двадцать ДВЕ" и т.п.
Также можно разделить вторую функцию на две подфункции: Первая обрабатывает только первую цыфру, т.к. она не будет склоняться: сто, двести и т.д. и вообще ее может не быть, А вторая уже разбирает числа от 0 до 99.
Как-то так.

  Ответить  
 
 автор: Sfinks   (27.11.2011 в 15:18)   письмо автору
 
   для: Belkin   (27.11.2011 в 07:15)
 

Уточнение. Родов должно быть 3. Хотя числительные и бывают только М и Ж, но изначально вы же будете переводить для описания какого-то существительного, поэтому, чтобы не было "сто двадцать одна окно", средний род тоже нужно описать.

  Ответить  
 
 автор: Belkin   (27.11.2011 в 16:20)   письмо автору
 
   для: Sfinks   (27.11.2011 в 15:18)
 

Большое спасибо )
Будет над чем подумать!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования