begin process at 2012 05 29 05:07:55
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

fonction en toutes letttres


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

fonction en toutes letttres

jeudi 31 décembre 2009 à 13:57:14 | fonction en toutes letttres

w120


salut les gar.
j'ai essayé d'ecrire une fonction qui permet de convertir en toutes lettres un montant donnés sous forme d'un double mais j'ai pensé vue la longueur de mon script que c'est vraiment bète et nécessite d'optimisation mais bon puisque chui débutaant je me tolère.
le probleme c'est que j'arrive pas a avoir une fonction qui fonctionne correctement car par exemple si je saisis le montant 120
la fonction me retourne cent et quatre vingt!!!
j'ai revisé mon code sans trouver le fuit j'espere que vpous m'aider d'une part a rectifier la mienne et d'autres part de me donner si c'est possibles des idées pour optimiser et merci d'avance.

voici le code:
#include <stdio.h>
#include <conio.h>
#include <string.h>
#define MONTANT_max 999999999.999 //declaration du montant maximal
/*fonction d'initialisation des chaines*/
void init_chaine(char*t , int n,char c)//t est la cahine a initialisé de taille n
// c est le caractere qu'avec la chaine sera initialisé
{
int i;
i=0;
while (i<n)
{
t[i]='c';
i++;
}
}
void makezero(char*t , int n)
{
int i;
for(i=0;i<=n;i++)
{
if (t[i]==' ')
t[i]='0';
}
}
/*foction convert qui permet de convertir un entier en son equivalent en lettre*/
void convert(char x , char*convx)
{
switch (x)
{
case '0':
sprintf(convx,"zero");break;
case '1':
sprintf(convx,"un");break;
case '2':
sprintf(convx,"deux");break;
case '3':
sprintf(convx,"trois");break;
case '4':
sprintf(convx,"quatre");break;
case '5':
sprintf(convx,"cinq");break;
case '6':
sprintf(convx,"six");break;
case '7':
sprintf(convx,"sept");break;
case '8':
sprintf(convx,"huit");break;
case '9':
sprintf(convx,"neuf");break;

}
}

/*fonction qui permet de convertir en lettre un bloc de chiffres*/
void convert_bloc(char* bloc, char*R)
{
char Sa[10];char Sb[10];char Sc[10];
char a=bloc[0],b=bloc[1],c=bloc[2];
convert(a,Sa);
convert(b,Sb);
convert(c,Sc);
if(a!='0')
{


switch (b)
{

case'0':
{
switch(c)
{
case'0':
sprintf(R,"%s cent");
default:
sprintf(R,"%s cent et %s",Sa,Sc);
}
}
case'1':
{
switch(c)
{
case'0':
sprintf(R,"%s cent dix",Sa); break;
case'1':
sprintf(R,"%s cent onze",Sa);break;
case'2':
sprintf(R,"%s cent douze",Sa);break;
case'3':
sprintf(R,"%s cent treize",Sa);break;
case'4':
sprintf(R,"%s cent quatorze",Sa);break;
case'5':
sprintf(R,"%s cent quinze",Sa);break;
case'6':
sprintf(R,"%s cent seize",Sa);break;
case'7':
sprintf(R,"%s cent dixsept",Sa);break;
case'8':
sprintf(R,"%s cent dixhuit",Sa);break;
case'9':
sprintf(R,"%s cent dixneuf",Sa);break;
}
}
case'2':
{
switch(c)
{
case'0':
sprintf(R,"%s cent vingt",Sa);break;
case'1':
sprintf(R,"%s cent vingt et un",Sa);break;
default:
sprintf(R,"%s cent vingt %s",Sa,Sc);break;
}
}
case'3':
{
switch(c)
{
case'0':
sprintf(R,"%s cent trente",Sa);break;
case'1':
sprintf(R,"%s cent trente et un",Sa);break;
default:
sprintf(R,"%s cent trente %s",Sa,Sc);break;
}
}

case'4':
{
switch(c)
{
case'0':
sprintf(R,"%s cent quarante",Sa);break;
case'1':
sprintf(R,"%s cent quarante et un",Sa);break;
default:
sprintf(R,"%s cent quarante %s",Sa,Sc);break;
}
}

case'5':
{
switch(c)
{
case'0':
sprintf(R,"%s cent cinquante",Sa);break;
case'1':
sprintf(R,"%s cent cinquante et un",Sa);break;
default:
sprintf(R,"%s cent cinquante %s",Sa,Sc);break;
}
}
case'6':
{
switch(c)
{
case'0':
sprintf(R,"%s cent soixante",Sa);break;
case'1':
sprintf(R,"%s cent soixante et un",Sa);break;
default:
sprintf(R,"%s cent soixante %s",Sa,Sc);break;
}
}
case'7':
{
switch(c)
{
case'0':
sprintf(R,"%s cent soixnte dix",Sa);break;
case'1':
sprintf(R,"%s cent soixante et onze",Sa);break;
case'2':
sprintf(R,"%s cent soixante douze",Sa);break;
case'3':
sprintf(R,"%s cent soixante treize",Sa);break;
case'4':
sprintf(R,"%s cent soixante quatorze",Sa);break;
case'5':
sprintf(R,"%s cent soixante quinze",Sa);break;
case'6':
sprintf(R,"%s cent soixante seize",Sa);break;
case'7':
sprintf(R,"%s cent soixante dixsept",Sa);break;
case'8':
sprintf(R,"%s cent soixante dixhuit",Sa);break;
case'9':
sprintf(R,"%s cent soixante dixneuf",Sa);break;
}
}

case'8':
{
switch(c)
{
case'0':
sprintf(R,"%s cent quatre vingt",Sa);break;
case'1':
sprintf(R,"%s cent quatre vingt et un",Sa);break;
default:
sprintf(R,"%s cent quatre vingt %s",Sa,Sc);break;
}
}

case'9':
{
switch(c)
{
case'0':
sprintf(R,"%s cent quatre vingt dix",Sa);break;
case'1':
sprintf(R,"%s cent qautre vingt et onze",Sa);break;
case'2':
sprintf(R,"%s cent quatre vingt douze",Sa);break;
case'3':
sprintf(R,"%s cent quatre vingt treize",Sa);break;
case'4':
sprintf(R,"%s cent quatre vingt quatorze",Sa);break;
case'5':
sprintf(R,"%s cent quatre vingt quinze",Sa);break;
case'6':
sprintf(R,"%s cent quatre vingt seize",Sa);break;
case'7':
sprintf(R,"%s cent quatre vingt dixsept",Sa);break;
case'8':
sprintf(R,"%s cent quatre vingt dixhuit",Sa);break;
case'9':
sprintf(R,"%s cent quatre vingt dixneuf",Sa);break;
}
}
}
}

else
if(a=='0')
{

switch(b)
{
case'0':
sprintf(R,"%s",Sc);break;
case'1':
{
switch(c)
{
case'0':
sprintf(R,"dix"); break;
case'1':
sprintf(R,"onze");break;
case'2':
sprintf(R,"douze");break;
case'3':
sprintf(R,"treize");break;
case'4':
sprintf(R,"quatorze");break;
case'5':
sprintf(R,"quinze");break;
case'6':
sprintf(R,"seize");break;
case'7':
sprintf(R,"dixsept");break;
case'8':
sprintf(R,"dixhuit");break;
case'9':
sprintf(R,"dixneuf");break;
}
}
case'2':
{
switch(c)
{
case'0':
sprintf(R,"vingt");break;
case'1':
sprintf(R,"vingt et un");break;
default:
sprintf(R,"vingt %s",Sc);break;
}
}
case'3':
{
switch(c)
{
case'0':
sprintf(R,"trente");break;
case'1':
sprintf(R,"trente et un");break;
default:
sprintf(R,"trente %s",Sc);break;
}
}

case'4':
{
switch(c)
{
case'0':
sprintf(R,"quarante");break;
case'1':
sprintf(R,"quarante et un");break;
default:
sprintf(R,"quarante %s",Sc);break;
}
}
case'5':
{
switch(c)
{
case'0':
sprintf(R,"cinquante");break;
case'1':
sprintf(R,"cinquante et un");break;
default:
sprintf(R,"cinquante %s",Sc);break;
}
}

case'6':
{
switch(c)
{
case'0':
sprintf(R,"soixante");break;
case'1':
sprintf(R,"soixante et un");break;
default:
sprintf(R,"soixante %s",Sc);break;
}
}
case'7':
{
switch(c)
{
case'0':
sprintf(R,"soixante dix");break;
case'1':
sprintf(R,"soixante et onze");break;
case'2':
sprintf(R,"soixante douze");break;
case'3':
sprintf(R,"soixante treize");break;
case'4':
sprintf(R,"soixante quatorze");break;
case'5':
sprintf(R,"soixante quinze");break;
case'6':
sprintf(R,"soixante seize");break;
case'7':
sprintf(R,"soixante dixsept");break;
case'8':
sprintf(R,"soixante dixhuit");break;
case'9':
sprintf(R,"soixante dixneuf");break;
}
}
case'8':
{
switch(c)
{
case'0':
sprintf(R,"quatre vingt");break;
case'1':
sprintf(R,"quatre vingt et un");break;
default:
sprintf(R,"quatre vingt %s",Sc);break;
}
}

case'9':
{
switch(c)
{
case'0':
sprintf(R,"quatre vingt dix");break;
case'1':
sprintf(R,"qautre vingt et onze");break;
case'2':
sprintf(R,"quatre vingt douze",Sa);break;
case'3':
sprintf(R,"quatre vingt treize",Sa);break;
case'4':
sprintf(R,"quatre vingt quatorze",Sa);break;
case'5':
sprintf(R,"quatre vingt quinze",Sa);break;
case'6':
sprintf(R,"quatre vingt seize",Sa);break;
case'7':
sprintf(R,"quatre vingt dixsept",Sa);break;
case'8':
sprintf(R,"quatre vingt dixhuit",Sa);break;
case'9':
sprintf(R,"quatre vingt dixneuf",Sa);break;
}
}
}

}
}
/*********************************************************************/
/*programme principale*/
int main()
{
char sarf[3], unit[3], mille[3], million[3];
char Rsarf[40],Runit[40],Rmille[40],Rmillion[40], arg1[10],arg2[10];
char c;
double m;
char s[12];
printf("donner arg1");
gets(arg1);
printf("arg2");
gets(arg2);

init_chaine(s,12,' ');
init_chaine(sarf,3,' ');
init_chaine(unit,3,' ');
init_chaine(mille,3,' ');
init_chaine(million,3,' ');
init_chaine(Rsarf,40,' ');
init_chaine(Runit,40,' ');
init_chaine(Rmille,40,' ');
init_chaine(Rmillion,40,' ');
do
{
printf("entrer le montant en chiffre: ");
scanf("%Lf", &m);
}
while(m>= MONTANT_max);
sprintf(s,"%13.3Lf",m);
makezero(s,12);
puts(s);
memcpy(sarf,s+10,3);
memcpy(unit,(s+6),3);
memcpy(mille,(s+3),3);
memcpy(million,(s),3);
convert_bloc(sarf,Rsarf);
convert_bloc(unit,Runit);
convert_bloc(mille,Rmille);
convert_bloc(million,Rmillion);
printf("%s\n",Rsarf);
printf("%s\n",Runit);
printf("%s\n",Rmille);
printf("%s\n",Rmillion);
printf("le montant en chiffre est:%s\n ",s);
printf("%s million %s mille %s %s et %s %s",Rmillion,Rmille,Runit,arg1,Rsarf,arg2);


getch();

return 1;
}
jeudi 31 décembre 2009 à 14:01:38 | Re : fonction en toutes letttres

w120


les arguments arg1 et arg2 sont respectivement monnaie unitaire et monnaie fractionnaire.
par exemple arg1=euro

arg2=centime


Cette discussion est classée dans : fonction, printf, montant, convert, memcpy


Répondre à ce message

Sujets en rapport avec ce message

probleme avec parametres [ par Amanobuo ] Bonjour, et merci pour les info sur la dll fmod ! ma question : J'apprend le C++ et je fais des application en mode console. a partir de la fonction m Problème de récursivité [ par Kurul1 ] bonjour à tousJ'ai un petit souci dans la fonction récursiveCette fonction doit permettre de trouver toutes les combinaisons possibles pour un puzzle Probleme de timer avec fonction de callback [ par julienbj ] Bonjour,j'ai un petit souci lors de la création d'un timer avec une fonction de callback.Voici un bout de code qui ne fonctionne pas, mais je ne vois la fonction while [ par romolo6 ] Bon jour à tous je commence depuis quelque jour à ecrire quelque petit code de debutant et j'essaye d'executer le suivant: #include #include main( Fonction Printf [ par kryss00 ] Bonjour, j'ai ce code : /*PROGRAMME DE CONVERSION DEGRE CELSIUS => DEGRE FAHRENEIT*/ #include couleur console unix sans printf [ par FearBlue ] Bonsoir a tous !Je cherche a mettre en couleur des caracteres dans une application mode console sous systeme unix.J'utlise une fonction de bas niveau Couleur console unix sans printf [ par FearBlue ] Bonsoir a tous !Je cherche a mettre en couleur des caracteres dans une application mode console sous systeme unix.J'utlise une fonction de bas niveau PROBLEME GESTION DE FILE !!!!!!!!! [ par POWERC85 ] Bonjour à tous, Voilà je suis débutant en langage C et j'ai un travail à faire sur les Files... On me demande de faire : 1 fonction qui permet d'ajout Programmer printf [ par jeanphilippe37 ] [u]Bonjour[/u], Je dois faire en TD un programme pour re programmer printf en langage C. Je n'ai aucune idée de comment faire. Je sais juste me servi Monnaie que doit rendre un caissier [ par genidou ] voila ce que je dois faire: Écrire un programme capable de calculer le nombre de billets minimal par un caissier lors d'un retrait d'argent d'un clie


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,452 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales