Nombres en lettres

Soyez le premier à donner votre avis sur cette source.

Snippet vu 27 222 fois - Téléchargée 28 fois

Contenu du snippet

Passe les nombres de 1 à 9999 en lettres en respectant toutes les règles de français

Source / Exemple :


#include<iostream>
using namespace std;

void main(void)
{
	int Nb=10000;
	int Milliers;
	int Centaines;
	int Dizaines;
	int Unites;
	char NomPart[10][10]={"dix","onze","douze","treize","quatorze","quinze","seize","dix-sept","dix-huit","dix-neuf"};
	char NomUnite[10][10]={"","un","deux","trois","quatre","cinq","six","sept","huit","neuf"};
	char NomDizaine[8][17]={"vingt","trente","quarante","cinquante","soixante","soixante-","quatre-vingt","quatre-vingt-"};
	char NomSpe[3][7]={"cent","-et-un","mille"};
	while(Nb>9999)
	{
	cout<<"quel est le nombre a transcrire en lettres\n";
	cin>>Nb;
	if(Nb>9999)
		cout<<"Le nombre doit etre inferieur a 10000\n";
	};
	Milliers=Nb/1000;
	  Nb=Nb%1000;
		Centaines=Nb/100;
		Unites=Nb%100;
		Dizaines=Unites/10;
		Unites=Unites%10;
		if(Milliers>1 && Milliers<10)
			cout<<NomUnite[Milliers]<<" "<<NomSpe[2]<<" ";
		if(Milliers==1)
			cout<<NomSpe[2]<<" ";

		if(Centaines>1)
		{
			cout<<NomUnite[Centaines]<<" "<<NomSpe[0]<<" ";
			if(Unites==0 && Dizaines==0)
				cout<<"\bs";
		};
		if(Centaines==1)
			cout<<NomSpe[0]<<" ";
		if(Dizaines>1 && Dizaines!=7 && Dizaines!=9)
		{
			cout<<NomDizaine[Dizaines-2];
			
			if (Dizaines==8 && Unites==0)
				cout<<"s";

			if(Unites>1)
			{
				cout<<"-"<<NomUnite[Unites];
				Unites=0;
			};
			if(Unites==1)
			{
				Unites=0;
				cout<<NomSpe[1];
			};
		};
		if(Dizaines==1 || Dizaines==7 || Dizaines==9)
		{
			if (Dizaines==7 || Dizaines==9)
				cout<<NomDizaine[Dizaines-2];
			if(Dizaines==7 && Unites==1)
				cout<<"\b"<<NomSpe[1]<<"\b\b";
			cout<<NomPart[Unites];
			Unites=0;
		};
		if(Dizaines!=0 && Centaines!=0)
		cout<<" ";
		cout<<NomUnite[Unites];
		cout<<"\n";
};

A voir également

Ajouter un commentaire

Commentaires

rrk275
Messages postés
542
Date d'inscription
vendredi 25 juin 2004
Statut
Membre
Dernière intervention
1 octobre 2007
2 -
juste une question ?
ne pense tu pas que le mettre sous forme de fonction genre (pour que ce
soit reutilisable..)
char *nbenlettres()
{
..
}
en fin bon c'est comme meme bien.
dletozeun
Messages postés
546
Date d'inscription
vendredi 13 février 2004
Statut
Membre
Dernière intervention
9 janvier 2008
-
genial! Je me souviens d'une source qui fait la meme chose mais qui est nettement plus ambitieuse puisqu'elle allait jusqu'aux milliards! En tout je m'etais bien amusé dessus! Elle faisais des fautes d'othographes enormes et de fois c'etait pas du tout francais! Je testerais une autre fois cette source parce la il est trop tard....
cs_max12
Messages postés
1491
Date d'inscription
dimanche 19 novembre 2000
Statut
Modérateur
Dernière intervention
7 juillet 2014
-
Ouais si c'est pas sous forme de fonction ça n'a pas grand intérêt (sauf celui éducatif)

A+
blassiou083
Messages postés
8
Date d'inscription
jeudi 17 novembre 2005
Statut
Membre
Dernière intervention
3 mars 2009
-
Après il est "relativement" facile de le mettre sous forme de fontion void ChiffesEnLettre(int Nb)

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.