Главная страница


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)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Числа прописью   Vlad   27 Mar 2001 17:57:49 
 Re: Числа прописью   Artem Chuprina   27 Mar 2001 18:42:55 
 Re: Числа прописью   Nikolay Pichtin   27 Mar 2001 22:40:47 
 Числа прописью   Andrew Ustinchik   25 Jun 2001 20:32:03 
 Re: Числа прописью   Ruslan Bondarev   26 Jun 2001 08:15:17 
 Re: Числа прописью   Ilya Rubtsov   27 Jun 2001 01:53:57 
 Re: Числа прописью   Ruslan Bondarev   27 Jun 2001 08:46:26 
 Re: Числа прописью   Alexander Babanov   27 Jun 2001 14:39:26 
 Re: Числа прописью   Ruslan Bondarev   28 Jun 2001 09:27:41 
 Числа пpописью   Albert N. MICHEEV   28 Jun 2001 00:15:26 
 Re: Числа пpописью   Ruslan Bondarev   28 Jun 2001 09:29:26 
 Числа прописью   pavel kurnosoff   28 Jun 2001 00:21:48 
 Re: Числа прописью   Dmitry Chertischev   26 Jun 2001 23:56:35 
 Re: Числа прописью   Nikolay Pichtin   28 Jun 2001 09:02:54 
Архивное /ru.perl/18133ac1171d.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional