szamolgato-szamizalo.pl
changeset 0 624a9ab34425
equal deleted inserted replaced
-1:000000000000 0:624a9ab34425
       
     1 #!/usr/bin/perl
       
     2 #
       
     3 # Szamolgato v1.0, 99/10/13
       
     4 #  (c)1999 peter 'grin' gervai
       
     5 #
       
     6 # kiirja egy szam erteket betukkel
       
     7 #
       
     8 
       
     9 $n=$ARGV[0] + 0;
       
    10 print "$n = ",&betukre($n),"\n";
       
    11 #print &betukre($n),"\n";
       
    12 
       
    13 
       
    14 sub betukre {
       
    15     my $n = shift;
       
    16 
       
    17     my @SZAM = ( 'nulla','egy','kettő','három','négy','öt','hat','hét','nyolc','kilenc' );
       
    18     my @TIZES= ( '','tizen','huszon','harminc','negyven','ötven','hatvan','hetven','nyolcvan','kilencven' );
       
    19     
       
    20     #my @HATVANY=( 'száz','ezer','millió','milliárd', 'billió', 'billiárd','trillió', 
       
    21    # 		'trilliárd', 'kvadrillió', 'kvadrilliárd',  );
       
    22    # my @EXP   = ( 2,     3,     6,       9,           12,      15,        18 );
       
    23 
       
    24 
       
    25 	my @HATVANY = qw( száz ezer );
       
    26 	my @EXP = ( 2, 3 );
       
    27 	#                                                                     \/ idaig tart a szamabrazolas :)
       
    28 	my @hatvanyok1 = qw( milli billi trilli kvadrilli kvintilli szextilli 
       
    29 		szeptilli oktilli nonilli decilli undecilli bidecilli tridecilli kvadecilli kvintdecilli szexdecilli );
       
    30 	for my $i ( 1..16 ) {
       
    31 		push @HATVANY, $hatvanyok1[$i-1] . 'ó';
       
    32 		push @EXP, $i*6;
       
    33 		push @HATVANY, $hatvanyok1[$i-1] . 'árd';
       
    34 		push @EXP, $i*6+3;
       
    35 	}
       
    36 
       
    37 	push @HATVANY, 'googol';
       
    38 	push @EXP, 100;
       
    39 
       
    40 	push @HATVANY, 'centillió';
       
    41 	push @EXP, 600;
       
    42 
       
    43 	# 1 googolplex = 10^googol = 10^(10^100)
       
    44 
       
    45     my $out = "";
       
    46     
       
    47     for( my $hatv=$#HATVANY; $hatv>=0; $hatv-- ) {
       
    48         # 10^$hatv az alap
       
    49         my $hatv_num = $EXP[$hatv];
       
    50         my $alap = "1e$hatv_num" + 0;
       
    51         if( $n>=$alap ) {
       
    52             my $resz = int($n / $alap);
       
    53             $out .= '-' if $out ne '';
       
    54             $out = $out . &betukre($resz) . $HATVANY[$hatv];
       
    55             $n -= $resz * $alap;
       
    56         }
       
    57     }
       
    58 
       
    59     if( $n > 99 ) {
       
    60         $out .= '-' if $out ne '';
       
    61         $out .= "SOK";
       
    62     } elsif( $n > 9 ) {
       
    63         $out .= '-' if $out ne '';
       
    64         if( $n==10 ) {
       
    65             $out .= 'tíz';
       
    66         } elsif( $n==20 ) {
       
    67             $out .= 'húsz';
       
    68         } else {
       
    69             my $tizen = int( $n / 10);
       
    70             $out .= $TIZES[$tizen] unless $tizen==0;
       
    71             my $egyen = $n - ($tizen * 10);
       
    72             $out .= $SZAM[$egyen] unless $egyen==0;
       
    73         }
       
    74     } elsif( $n > 0 ) {
       
    75         $out .= '-' if $out ne '';
       
    76         $out .= $SZAM[$n];
       
    77     }
       
    78 
       
    79     return $out;
       
    80 }
       
    81