Сумма прописью

Feb 17, 2019 19:05

Вспомнил старую задачку начинающего программиста: написать сумму прописью. То есть, имея «123,45» на входе, вернуть строку «сто двадцать три рубля сорок пять копеек». Пока нам не разрешили сокращать до «руб.» и «коп.», мы искали общее правило для всех этих «рубль / рубля / рублей» и «копейка / копейки / копеек». Правило несложное: если число заканчивается на «1», но не на «11», то «рубль», если на «2/3/4», но не на «12/13/14», то «рубля», иначе - «рублей».

Написали, заработало, забыли. А недавно я задумался: откуда такое разнообразие? Забудем на минуту про большие числа - в принципе, понятна логика, когда «пять тысяч сто два» подчиняется тем же правилам, что и просто «два». И даже исключение «11-19» можно понять.

Так вот, «рубль» - это именительный падеж единственного числа. Множественное число будет «рубли». А родительный падеж от них - это «рубля» и «рублей». Таким образом, «1», даётся в именительном падеже, а все остальные - в родительном. Почему бы и нет, логику падежей я так и не понял, поверим на слово. Но почему единственное число идёт до «4», и только с «5» мы переключаемся на множественное?

русский язык, программирование

Previous post Next post
Up