IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

Transformer un montant saisi en chiffre en lettre sur C/C++


Sujet :

C++Builder

  1. #1
    Nouveau membre du Club
    Inscrit en
    août 2003
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : août 2003
    Messages : 61
    Points : 37
    Points
    37
    Par défaut Transformer un montant saisi en chiffre en lettre sur C/C++
    Salut,

    S'il vous plait, quelqu'un peut-il avoir un algo en C/C++ prêt à l'utilisation pour transformer un montant saisi en chiffre en lettre.

    Merci d'avance pour la réponse.

    Dibak.

  2. #2
    Rédacteur
    Avatar de Greybird
    Inscrit en
    juin 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : juin 2002
    Messages : 673
    Points : 1 251
    Points
    1 251
    Par défaut
    Bonjout,

    Tu peux adapter ce code pour Delphi :
    http://www.developpez.net/forums/vie...=nombre+lettre

    Cordialement,

    Arnaud

  3. #3
    Nouveau membre du Club
    Inscrit en
    août 2003
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : août 2003
    Messages : 61
    Points : 37
    Points
    37
    Par défaut
    salut,

    C'est justement ce code que j'ai et que je n'arrive pas à adapter en C/C++ ou tout au moins qui me génère trop d'erreur; en fait c'est de cette fonction NombreEnLettre que me proviens l'erreur de violation d'accès dont je fais état dans l'une de mes questions au forum d'aujourdh'ui et qui reste sans réponse.
    J'adapte bien le code mais alors, je n'arrive pas à récupérer l'AnsiString généré par la fonction; pourtant la traduction marche bien c-à-d en débogant, je trouve bien le montant en lettre dans la variable à renvoyer, mais quand je dits return(resultat), et qu'il faille récupérer ce résultat dans un AnsiString, il ya erreur, j'ai beau chercher je n'ai pas trouver, s'il ya quelqu'un qui l'a déja traduit, je serais alors heureux de recevoir sa solution.

    Soyez indulgent à mon égard.

    Dibak

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    août 2002
    Messages
    481
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2002
    Messages : 481
    Points : 241
    Points
    241
    Par défaut
    Voilà un code que j'ai écrit pour remplir des chèques.
    Lorsque je l'ai écrit, la monnaie française était le francs. Ce qui explique le nom de certaines variables. J'ai ensuite simplement remplacé le libellé "Francs" par celui d'"Euro".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    106
    107
    108
    109
    110
    111
    112
    113
    114
     
      double montant= StrToFloat(eMontantChiffres->Text);
      AnsiString asFrancs, asCentimes;
      francs=int(montant); centimes=int(100*(montant-francs)+0.5);
      Nombre(francs,chNombre); chNombre[0]=toupper(chNombre[0]);
      asFrancs=AnsiString(chNombre);
      Nombre(centimes, chNombre); asCentimes=AnsiString(chNombre);
     
      asMontant=asFrancs+" euro";
      if(francs>1) asMontant=asMontant+"s";
      if(centimes>0)
      {
        asMontant=asMontant+AnsiString(" ")+asCentimes +
                    AnsiString(" centime");
        if(centimes>1) asMontant =asMontant +"s";
      }
     
     
    //---------------------------------------------------------------------------
    void TChequeBdFForm::SousNombre(const unsigned int n, char* chaine)
    {
      chaine[0]=0;
      unsigned int centaines=n/100, n1=n%100, dixaines=n1/10, unites=n1%10;
      if(n==0) return;
      if(centaines!=0)
      {
        if(centaines==1) strcpy(chaine, "cent");
        else
        {
          strcpy(chaine, TabUnites[centaines-1]);
          strcat(chaine," cents");
        }
        if(n1==0) return;
        strcat(chaine," ");
      }
     
      if(unites==0)
      {
        strcat(chaine, TabDixaines[dixaines-1]);
        return;
      }
     
      if(n1<20)             //  0 < n1 < 20
      {
        strcat(chaine, TabUnites[n1-1]); return;
      }
      if(n1<60)             //  19 < n1 < 60
      {
        strcat(chaine, TabDixaines[dixaines-1]); strcat(chaine," ");
        if(unites==1) strcat(chaine, "et ");
        strcat(chaine, TabUnites[unites-1]);
        return;
      }
      if(n1<80)             //  59 <n1 < 80
      {
        unites=n1-60;
        strcat(chaine,"soixante ");
        if(unites==1) strcat(chaine, "et ");
        strcat(chaine, TabUnites[unites-1]);
        return;
      }
      unites=n1-80;
      strcat(chaine,"quatre-vingt ");
      strcat(chaine, TabUnites[unites-1]);
      return;
    }
    //---------------------------------------------------------------------------
     
    void TChequeBdFForm::Nombre(const unsigned int n, char* resultat)
    {
      char chaine[200];
      resultat[0]=0;
      if(n==0)
      {
        strcpy(resultat, "zéro");return;
      }  
      unsigned int milliards, millions, mille, n1, n2, reste;
      milliards=n/1000000000; n1=n%1000000000;
      millions=n1/1000000; n2=n1%1000000;
      mille=n2/1000; reste=n2%1000;
      AnsiString asMilliards="", asMillions="", asMille="", asReste="";
      if(milliards!=0)
      {
        SousNombre(milliards, chaine); asMilliards=AnsiString(chaine);
        asMilliards=asMilliards+" milliard";
        if(milliards>1) asMilliards=asMilliards+"s";
        strcpy(resultat, asMilliards.c_str());
        if(n1==0) return;
        strcat(resultat, " ");
      }
     
      if(millions!=0)
      {
        SousNombre(millions, chaine); asMillions=AnsiString(chaine)+" million";
        if(millions>1) asMillions=asMillions+"s";
        strcat(resultat, asMillions.c_str());
        if(n2==0) return;
        strcat(resultat, " ");
      }
     
      if(mille!=0)
      {
        chaine[0]=0;
        if(mille>1) SousNombre(mille, chaine); asMille=AnsiString(chaine)+" mille";
        strcat(resultat, asMille.c_str());
        if(reste==0) return;
        strcat(resultat, " ");
      }
     
      SousNombre(reste, chaine); strcat(resultat, chaine);
      if((reste%100)==80) strcat(resultat, "s");
      return;
    }
    //---------------------------------------------------------------------------
    Gilbert PASQUALINI

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    septembre 2003
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2003
    Messages : 89
    Points : 90
    Points
    90
    Par défaut
    Salutation,
    ton code marche nikel...
    Ya juste deux trois variables a ajouter et les deux tableau a créer!!!
    Merci pour ton aide
    Cordialement
    Walm

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2003] Pb fonction transformation chiffres en lettres
    Par fbu78 dans le forum VBA Access
    Réponses: 6
    Dernier message: 29/07/2009, 17h21
  2. transformer un chiffre en lettre
    Par kira-3 dans le forum VB.NET
    Réponses: 5
    Dernier message: 15/05/2009, 12h19
  3. Réponses: 1
    Dernier message: 04/06/2007, 08h51
  4. [VBA-W]transformer Chiffres en lettres
    Par anisr dans le forum VBA Word
    Réponses: 5
    Dernier message: 17/05/2007, 14h16
  5. Transformer chiffre en lettre
    Par maximil dans le forum Access
    Réponses: 4
    Dernier message: 22/12/2005, 16h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo