1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105
   |  
#!/usr/bin/perl
 %mot = (
 '0'                    =>              ' zero',
'1'                     =>              ' et un',
'2'                     =>              ' deux',
'3'                     =>              ' trois',
'4'                     =>              ' quatre',
'5'                     =>              ' cinq',
'6'                     =>              ' six',
'7'                     =>              ' sept',
'8'                     =>              ' huit',
'9'                     =>              ' neuf',
'10'                    =>             ' dix',
'11'                    =>	          ' onze',
'12'	         =>             ' douze',
'13'	         =>             ' treize',
'14'	         =>	          ' quatorze',
'15'	         =>	          ' quinze',
'16'	         =>	           ' seize',
'17'                    =>             ' dix sept' ,
'18'                    =>             ' dix huit' ,
'19'                    =>             ' dix neuf' ,
'20'	        	=>		' vingt',
'30'	        	=>		' trente',
'40'	        	=>		' quarante',
'50'	        	=>		' cinquante',
'70'	        	=>		' soixante dix',
'71'	        	=>		' soixante et onze',
'60'	        	=>		' soixante',
'80'	        	=>		' quatre-vingt',
'81'	        	=>		' quatre-vingt un',
'90'	        	=>		' quatre vingt-dix',
'cent'	        	=>		' cent',
'100'	        	=>		' cents',
'1000'	        	=>		' mille',
'1000a'	        	=>		' milles',
'1000000'	      	=>		' million',
'1000000a'	      	=>		' millions',
'1000000000'	=>		' milliard',
'1000000000a'	=>		' milliards',
);
 
$cpt = 0 ;
do
{
print "Saisir un nombre\n:>" ;
chomp  ( $g = <STDIN> ) ;
$greg = &convertir_chiffre ($g) ;
print "$greg \n" ;
}
until ( $cpt == 1 ) ;
#################################
sub convertir_chiffre
{
  my ($convertir_nombre ) = @_ ;
$longueur_nombre = length $convertir_nombre ;
my $nombre_final ;
my $chiffre1 = substr ( $convertir_nombre ,0,1) ;
my $chiffre2 = substr ( $convertir_nombre ,1,1) ;
my $chiffre3 = substr ( $convertir_nombre ,2,1) ;
my $chiffre4 = substr ( $convertir_nombre ,3,1) ;
my $chiffre5 = substr ( $convertir_nombre ,4,1) ;
  if    ( $convertir_nombre < 100  )               {$nombre_final = &inferieur_100 ( $convertir_nombre ) ;}
  elsif ( $convertir_nombre == 100 )             { $nombre_final = " cent";}
  elsif ( $convertir_nombre == 101 )                                                            { $nombre_final = " cent un";}
  elsif ( $longueur_nombre < 4 && $chiffre2 == 0 && $chiffre3 ==0 )  { $nombre_final = $mot{$chiffre1} .$mot{100} ; }
  elsif ( $longueur_nombre < 4 && $chiffre2 == 0 && $chiffre3 ==1 )  { $nombre_final = $mot{$chiffre1} . $mot{100} . " et un"; }
  elsif ( $longueur_nombre < 4 && $chiffre1 == 1 ) {$number = $chiffre2.$chiffre3 ;$nombre_final = $mot{cent}. &inferieur_100 ( $number ) ;   }
  elsif ( $longueur_nombre < 4 ) {$number = $chiffre2.$chiffre3 ;$nombre_final = $mot{$chiffre1} .$mot{100}. &inferieur_100 ( $number ) ;   }
  $nombre_lettre_netoyer = &netoyer_espace ($nombre_final) ;
  return $nombre_lettre_netoyer
}
#####traite les chiffres inferieure a 100
sub inferieur_100
{
 my ( $nombre_inferieur_100 ) = @_ ;
 my $chiffre_1 = substr ( $nombre_inferieur_100 ,0,1) ;
 my $chiffre_2 = substr ( $nombre_inferieur_100 ,1,1) ;
 $longueurnombre = length $nombre_inferieur_100 ;
  if ( $nombre_inferieur_100 == 1 ) { $nombrefinal = " un" ; }
  elsif ($nombre_inferieur_100 < 21  || $nombre_inferieur_100 == 71 ) { $nombrefinal = $mot{$nombre_inferieur_100}}
  elsif (  $chiffre_2 == 0 && $longueurnombre == 2 ) { $nombrefinal = $mot{$chiffre_1 * 10} ;}
  else
             {
                  if ( $chiffre_1 == 2 || $chiffre_1 == 3 || $chiffre_1 == 4 || $chiffre_1 == 5 || $chiffre_1 == 6 || $chiffre_1 == 8)
                      {
                                $nombrefinal = $mot{$chiffre_1 * 10} . $mot{$chiffre_2}
                      }
                  elsif ( $chiffre_1 == 7 || $chiffre_1 == 9 )
                      {
                       $num = $chiffre_1 -1 ;
                       $nombrefinal = $mot{$num * 10} . $mot{$chiffre_2+10} ;
                      }
             }
  return $nombrefinal
 }
################################
sub netoyer_espace
{
  my ( $nombre_f ) = @_ ;
  my $longueur_n = length $nombre_f ;
  $espace = substr ( $nombre_f , 0 , 1 ) ;
  if ( $espace eq " " ) {$nombre_f=substr ( $nombre_f , 1 , $longueur_n ) ;}
} | 
Partager