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;
}
//--------------------------------------------------------------------------- |
Partager