Chiffre au lettre multilangage

Soyez le premier à donner votre avis sur cette source.

Vue 6 616 fois - Téléchargée 871 fois

Description

un petit programme qui libele un nombre en toute lettres en 5 langues ,pour l'arabe il faut configuer le system avc l'arabe

Source / Exemple :


// la fonction de la langue francaise la suite dans le zip
char *libfr(unsigned long long int n,char *p)
{
char*un[]={"","un","deux","trois","quatre","cinq","six","sept","huit","neuf",
"dix","onze","douze","treize","quatorze","quinze","seize","dix-sept","dix-huit","dix-neuf"},

  • di[]={"","","vingt","trente","quarante","cinquante","soixante","soixante","quatre-vingt","quatre-vingt"},
  • ce[]={"","mille","million","milliard","billion","billiard"};
if(!n)sprintf(p,"zero ");else{int i,t[20],c,d,u,k; for(i=0;n;t[i++]=n%1000,n/=1000); for(--i;i>-1;i--) {if(t[i]){ if(t[i]>1||i!=1){ c=t[i]/100;k=t[i]%100;d=k/10;u=k%10; if(c) sprintf(p+lstrlen(p),"%s%scent%s",(c!=1)?un[c]:"",(c!=1)?" ":"",(u+d)?" ":""); if(d<2) sprintf(p+lstrlen(p),"%s",un[k]); else sprintf(p+lstrlen(p),"%s%s%s",di[d], ((k==70||k==90||u)&&k>19)?(u!=1||d>7)?"-":" et ":"", un[(d==7||d==9)?u+10:u]); } sprintf(p+lstrlen(p),"%s%s%s%s ",(i!=1&&((t[i]>100&&!(t[i]%100))||t[i]%100==80))?"s":"", (t[i]==1==i)?"":" ",ce[i],(i>1&&t[i]>1)?"s":"");}}}
  • p-=32;p[lstrlen(p)-1]=0;return p;}

Conclusion :


on peut ecouter les nombers libellés en francais

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
39
Date d'inscription
samedi 3 juin 2006
Statut
Membre
Dernière intervention
28 octobre 2008

Moi je trouve ça marrant lol.
Fallait y penser. Mais sinon tout ce que dit MuPuf c'est vrai aussi.
Messages postés
536
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
22 août 2008

C'est quoi ? un concours d'illisibilité ?
Et les nombres négatifs ? c'est pas des nombres ?

Suggestions pour améliorer ça (être méchant c'est bien beau mais encore faut-il expliquer pourquoi ;) :

- Pour l'illisibilité, il existe des standards d'indentation qui facilitent la lisibilité, des exemples des plus connus ici : http://en.wikipedia.org/wiki/Indent_style. Perso, j'utilise le style Allman.

- Remplacer unsigned long long int par long long et faire la condition pour le négatif

- Essaye de factoriser ton code pour tout les langues. je m'explique, dans le cas actuel des choses, tu as un code pour le francais, et le même aux noms pres pour les autres langues. Essaye de voir si tu peux pas pondre un code commun puis coder les fonctions pour les différences. Le mieux pour ça est d'utiliser l'objet et le concept d'héritage même si ce n'est absolument pas nécéssaire. Néamoins, si tu ne connais pas le c++, ce serait une bonne occasion pour t'y foutre ;)

- Cpp france est un site d'entraide, les sources déposées doivent être exemplaires pour les débutants. C'est à cette condition que le site pourra avoir des membres dont le niveau augmentera rapidement et avec un style de programmation mûr, cette source doit vite être corrigée ou bien supprimée mais je ne pense pas qu'elle doive rester en l'état.

Voilà, j'espère que tu comprends les raisons qui me poussent à être aussi critique.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.