![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
bolt13 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 26.12.2007 Репутация: нет Всего: нет |
помогите пожалуйста написать скрипт !!!!!!!!!!!!!!!!!!!
Написать скрипт, заменяющий текстовое написание числительного (в любом падаже) на цифровое написание. Ограничиться двузначными числами. |
|||
|
||||
Sadok |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 2.11.2004 Репутация: 1 Всего: 2 |
ггг. "один" и "одна" - падеж один и тот же... (это намек)
|
|||
|
||||
bolt13 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 26.12.2007 Репутация: нет Всего: нет |
нет вот именно что подежи могут быть разные!!!!!!!!!!!!
![]() |
|||
|
||||
vadiml |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 310 Регистрация: 27.7.2007 Репутация: 5 Всего: 7 |
вообще достаточно просто подумать
вот из моих первых опытов на перле (вызывать dig2str):
при желании можно улучшить -- здесь есть куда ![]() |
|||
|
||||
shamber |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: 17 Всего: 18 |
vadiml, я думаю это не понадобиться, судя по посту
|
|||
|
||||
WERT |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 25.6.2007 Репутация: нет Всего: нет |
Мой вариант для сумм в рублях до 20000 руб,
вызывать num2str, там мини-тест на синтаксис проверял ![]() sub semantic {$ost=$_[0]; $out=""; if($ost >= 100) {$jkl = $ost / 100; $out.=$hang[$jkl]; $ost= $ost%100; } if($ost >= 20){ $jkl = $ost / 10; $out.=$des[$jkl]; $ost= $ost%10; } if($ost>0) {$out.=$_1_19[$ost]; if ($ost==1){$out.=$namerub[1];} elsif ($ost<5){$out.=$namerub[2];} else {$out.=$namerub[3];} } else {$out.=$namerub[3];} } sub num2str{ $L=$_[0]; $s=""; $_1_2[1]="одна "; $_1_2[2]="две "; $_1_19[1]="один "; $_1_19[2]="два "; $_1_19[3]="три "; $_1_19[4]="четыре "; $_1_19[5]="пять "; $_1_19[6]="шесть "; $_1_19[7]="семь "; $_1_19[8]="восемь "; $_1_19[9]="девять "; $_1_19[10]="десять "; $_1_19[11]="одиннацать "; $_1_19[12]="двенадцать "; $_1_19[13]="тринадцать "; $_1_19[14]="четырнадцать "; $_1_19[15]="пятнадцать "; $_1_19[16]="шестнадцать "; $_1_19[17]="семнадцать "; $_1_19[18]="восемнадцать "; $_1_19[19]="девятнадцать "; $des[2]="двадцать "; $des[3]="тридцать "; $des[4]="сорок "; $des[5]="пятьдесят "; $des[6]="шестьдесят "; $des[7]="семьдесят "; $des[8]="восемдесят "; $des[9]="девяносто "; $hang[1]="сто "; $hang[2]="двести "; $hang[3]="триста "; $hang[4]="четыреста "; $hang[5]="пятьсот "; $hang[6]="шестьсот "; $hang[7]="семьсот "; $hang[8]="восемьсот "; $hang[9]="девятьсот "; $namerub[1]="рубль "; $namerub[2]="рубля "; $namerub[3]="рублей "; $nametho[1]="тысяча "; $nametho[2]="тысячи "; $nametho[3]="тысяч "; if($L >=20000){return "Сумму не удалось рассчитать, она слишком большая"} if($L >= 1000) {$ost=$L%1000; $L=$L/1000; if ($L<3){$s.=$_1_2[$L].$nametho[$L];} elsif ($L<5){$s.=$_1_19[$L].$nametho[2];} else {$s.=$_1_19[$L].$nametho[3];} if ($ost==0){$s.="рублей ";} else {$s.=semantic($ost);} } else {$s.=semantic($L);} return $s."00 копеек"; } for ($i=0;$i<20;$i++) {$per=int(rand(9999)); print $per."!!".num2str($per)."\n"; } |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |