|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Nikolay Pichtin 2:5056/30 27 Mar 2001 22:40:47 To : Vlad@niko.Kiev.Ua Subject : Re: Числа прописью --------------------------------------------------------------------------------
vnku>> Столкнулся тут с проблемкой: нужно числа выдавать прописью, например
vnku>> 121, как "сто двадцать один". Если кому известен модуль или хотя
vnku>> бы методика, подбросьте ссылку или совет, буду очень признателен.
Лови.
IMHO пора в FAQ включать.
= Вставка =
#!/usr/local/bin/perl -w
$index = '43'; # Пример
&i2x;
#------------------------------------------------------------------------------
sub i2x
{
@base =
('','один','два','три','четыре','пять','шесть','семь','восемь','девять');
@ebase = ('','одна','две');
@hbase =
('','сто','двести','триста','четыреста','пятьсот','шестьсот','семьсот','восемьс
от','девятьсот');
@dbase =
('','десять','двадцать','тридцать','сорок','пятьдесят','шестьдесят','семьдесят'
,'восемьдесят','девяносто');
@abase =
('','одинадцать','двенадцать','тринадцать','четырнадцать','пятнадцать','шестнад
цать','семнадцать','восемнадцать','девятнадцать');
@sel = ('','тыс.','мил.','');
my($i)=(@_);
my ($len) = length ($i)-1;
for $tree (0..($len/3)){
$t = '';
for $count (0..2){
$index = $count + $tree*3;
if ( $index <= $len){
$ch = substr ($i,$len - $index,1);
if ($count == 0){
$tag = $ch;
if ($tree == 1 && ($ch == 1 || $ch == 2 )){
$t = $ebase[$ch] . ' ' . $t;
}else {
$t = $base[$ch] . ' ' . $t;
}
}elsif ( $count == 1){
if ($ch != 1){
$t = $dbase[$ch] . ' ' . $t ;
}else{
$t = $abase[$tag];
}
}else{
$t = $hbase[$ch] . ' ' . $t;
}
}
}
$out = $t . ' ' . $sel[$tree] . ' ' . $out ;
}
print "$out = $tag\n";
return $out;
}
1;
print "$out, $tag\n";
= Вставка =
-- Hиколай.
* "BUSY" - сказала она, "No carrier" - сказал он.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
---
* Origin: Если это глупо, но работает, - значит это не глупо. (2:5056/30)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/18133ac1171d.html, оценка из 5, голосов 10
|