begin process at 2010 02 09 15:39:28
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Texte

 > NOMBRE EN LETTRES (96 -> QUATRE-VINGT SEIZE)

NOMBRE EN LETTRES (96 -> QUATRE-VINGT SEIZE)


 Information sur la source

Note :
7 / 10 - par 1 personne
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Texte Niveau :Débutant Date de création :09/11/2002 Date de mise à jour :09/11/2002 19:43:28 Vu :3 099

Auteur : fabiin

Ecrire un message privé
Site perso
Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

 Description

Voici une fonction, renvoyant un integer en string, de façon "manuscrite"
exemple : 96 -> quatre-vingt seize

Source

  • function EnLettres(N:integer):string;
  • // TRADUIRE UN NOMBRE EN LETTRES : Limites : de -MaxLongInt À MaxLongInt.
  • //[Auteur : Participant, news.vienneinfo.org forum nzn.fr.delphi]
  • Const
  • Unite:Array[1..16] of String=('un','deux','trois','quatre','cinq','six',
  • 'sept','huit','neuf','dix','onze','douze',
  • 'treize','quatorze','quinze','seize');
  • Dizaine:Array[2..8]of String=('vingt','trente','quarante','cinquante',
  • 'soixante','','quatre-vingt');
  • Coefs:Array[0..3]of String=('cent','mille','million','milliard');
  • Var
  • Temp : String;
  • C,D,U : Byte;
  • Coef : Byte;
  • I : Word;
  • Neg : Boolean;
  • Begin
  • If N=0 then
  • Begin
  • Result:=' zéro';
  • Exit;
  • End;
  • Result:='';
  • Neg:= N<0;
  • If Neg then N:=-N;
  • Coef:=0;
  • Repeat
  • U:=N mod 10; N:=N div 10; {RÉcupÈre unitÉ et dizaine}
  • D:=N mod 10; N:=N div 10; {RÉcupÈre dizaine}
  • If D in [1,7,9] then
  • Begin
  • Dec(D);
  • Inc(U,10);
  • End;
  • Temp:='';
  • If D>1 then
  • Begin
  • Temp:=' '+Dizaine[D];
  • If (D<8) and ((U=1) or (U=11)) then
  • Temp:=Temp+' et';
  • End;
  • If U>16 then
  • Begin
  • Temp:=Temp+' '+Unite[10];
  • Dec(U,10);
  • End;
  • If U>0 then Temp:=Temp+' '+Unite[U];
  • If (Result='') and (D=8) and (U=0) then Result:='s';
  • Result:=Temp+Result;
  • C:=N mod 10; N:=N div 10; {RÉcupÈre centaine}
  • If C>0 then
  • Begin
  • Temp:='';
  • If C>1 then Temp:=' '+Unite[C]+Temp;
  • Temp:=Temp+' '+Coefs[0];
  • If (Result='') and (C>1) then Result:='s';
  • Result:=Temp+Result;
  • End;
  • If N>0 then
  • Begin
  • Inc(Coef);
  • I:=N mod 1000;
  • If (I>1) and (Coef>1) then Result:='s'+result;
  • If I>0 then Result:=' '+Coefs[Coef]+Result;
  • If (I=1) and (Coef=1) then Dec(N);
  • End;
  • until N=0;
  • If Neg then Result:='moins'+result;
  • end;
function EnLettres(N:integer):string;
// TRADUIRE UN NOMBRE EN LETTRES : Limites : de -MaxLongInt À MaxLongInt.
//[Auteur : Participant, news.vienneinfo.org forum nzn.fr.delphi]
Const
  Unite:Array[1..16] of String=('un','deux','trois','quatre','cinq','six',
                                'sept','huit','neuf','dix','onze','douze',
                                'treize','quatorze','quinze','seize');
  Dizaine:Array[2..8]of String=('vingt','trente','quarante','cinquante',
                                'soixante','','quatre-vingt');
  Coefs:Array[0..3]of String=('cent','mille','million','milliard');
Var
  Temp  : String;
  C,D,U : Byte;
  Coef  : Byte;
  I     : Word;
  Neg   : Boolean;
Begin
  If N=0 then
  Begin
    Result:=' zéro';
    Exit;
  End;
  Result:='';
  Neg:= N<0;
  If Neg then N:=-N;
  Coef:=0;
  Repeat
    U:=N mod 10; N:=N div 10; {RÉcupÈre unitÉ et dizaine}
    D:=N mod 10; N:=N div 10; {RÉcupÈre dizaine}
    If D in [1,7,9] then
    Begin
      Dec(D);
      Inc(U,10);
    End;
    Temp:='';
    If D>1 then
    Begin
      Temp:=' '+Dizaine[D];
      If (D<8) and ((U=1) or (U=11)) then
        Temp:=Temp+' et';
    End;
    If U>16 then
    Begin
      Temp:=Temp+' '+Unite[10];
      Dec(U,10);
    End;
    If U>0 then Temp:=Temp+' '+Unite[U];
    If (Result='') and (D=8) and (U=0) then Result:='s';
    Result:=Temp+Result;
    C:=N mod 10; N:=N div 10; {RÉcupÈre centaine}
    If C>0 then
    Begin
      Temp:='';
      If C>1 then Temp:=' '+Unite[C]+Temp;
      Temp:=Temp+' '+Coefs[0];
      If (Result='') and (C>1) then Result:='s';
      Result:=Temp+Result;
    End;
    If N>0 then
    Begin
      Inc(Coef);
      I:=N mod 1000;
      If (I>1) and (Coef>1) then Result:='s'+result;
      If I>0 then Result:=' '+Coefs[Coef]+Result;
      If (I=1) and (Coef=1) then Dec(N);
    End;
  until N=0;
  If Neg then Result:='moins'+result;
end;

 Conclusion

Ce code n'est pas de moi


 Sources du même auteur

Source avec Zip CAPTUER LE SON SORTANT ET L'ENREGISTRER DANS UN FICHIER WAV
CALCUL D'UNE MOYENNE
CHANGER LA DURÉE D'AFFICHAGE DES BULLES D'AIDES (HINT)
Source avec Zip Source avec une capture ASCII-T : PETIT SOFT D'ASCII ART.
CHANGER CONTRASTE / LUMINOSIT&#201; (L'ALGORITHME)

 Sources de la même categorie

Source avec Zip COMBINAISONS DE STRINGS par askil2000
Source avec Zip Source avec une capture RECONNAISSANCE DE CARACTÈRES (OCR) par Bacterius
Source avec Zip Source avec une capture NETTOYAGE AUTOMATIQUE DE NOMS DE FICHIERS par John Dogget
DISTANCE DE JARO-WINKLER par PoulpHunter
Source avec Zip BASE DE DONNÉE WIKI par thithony

Commentaires et avis

Commentaire de Delphiprog le 10/11/2002 11:28:19 administrateur CS

Voir aussi, sur le même sujet  : http://phidels.com/php/index.php3?page=../commun/voirprogrammes.php3&ChoixMenu=programme

Commentaire de Bruto le 10/11/2002 14:28:05

Le problème ( minime ) est que ça ne marche pas pour nous les belges puisque nous utilisons les termes "septante & nonante" mais l'idée peut être pratique dans certains cas.

Commentaire de fraidia le 04/03/2003 12:19:38

bonjour;
j'ai un probleme de telecharge parce que j'avais pas de zip;pourquoi?

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,014 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales