Nombres en lettres

Soyez le premier à donner votre avis sur cette source.

Snippet vu 27 331 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

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)
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+
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....
Messages postés
540
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.

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.