Besoin d'aide pour un petit programme en C#

joben22 Messages postés 4 Date d'inscription mercredi 10 février 2010 Statut Membre Dernière intervention 10 octobre 2010 - 10 févr. 2010 à 08:29
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 - 10 févr. 2010 à 11:04
Bonjour,

Je viens demander un peu d'aide pour un petit programme en C#.
Je suis en 3eme année en d'informatique spé Developpement et j'ai un devoir a rendre pour la fin de la semaine en C# et la je patoge.

Je dois concevoir un programme qui convertit un Chiffre en Lettre de 1 a 1 milliard.

Par exemple : l'utilisateur entre 12590 et le programme lui renvoie "Douze mille cinq cents quatre vingt dix"

Si quelqu'un a une idée sur l'algo ou encore une portion de code qui pourrait m'aider je vous remercie par avance et si je n'ai pas été assez clair je repondrai a vos question le plus vite possible.

Merci a vous pour votre aide.

PS : J'ai lu le reglement et je sais qu'il est interdit de demander un programme tout fait et ce n'est pas ce que je demande je voudrai juste un peu d'aide sur l'algo parceque je ne vois pas comment faire...
Merci encore

1 réponse

krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
10 févr. 2010 à 11:04
Salut

Pour cela, il faut raisonner un peu de la même manière que toi quand tu veux prononcer ce mot.

Prenons ce nombre : 123456789

string EcrireNombreEnLettres(int nombre)

Tu commences par compter le nombre de chiffres et par les regrouper par 3 à partir de la droite. On a donc 123 456 789
Il te faut une méthode pour écrire la valeur d'un nombre à 3 chiffres max, à laquelle tu envoies ton nombre à 3 chiffres et un booléen qui dit s'il s'agit des 3 chiffres les plus à droite.
Pour chaque groupe de chiffre (de 0 à nbgroupes-1),
- si i < nbgroupe-2 et groupe[i] = 1, tu marques "un".
- Ensuite, tu appelles Ecrire3Chiffres(groupe[i], i != nbgroupes-1).
- Si i nbgroupes-2, tu marques "mille". Si i nbgroupes-3, tu marques "million" (+"s" si groupe[i] > 1). Si i = nbgroupes-4, tu marques "milliard" (+"s" si groupe[i] > 1).

string Ecrire3Chiffres(int nombre, bool lePlusADroite);

Si tu as (sur ton nombre à 3 chiffres max) un chiffre des centaines supérieur à 1, tu marques sa valeur via Ecrire1Chiffre(), puis "cent" (tu marques également "cent" si le chiffre des centaines est égal à 1). Si ce sont les 3 chiffres les plus à droite (booléen transmis) et que les 2 derniers chiffres sont 00, tu mets un "s" après "cent". Ensuite, tu écris les 2 derniers chiffres via une fonction dédiée.

string Ecrire2Chiffres(int nombre, bool lePlusADroite);

- Si la valeur est entre 1 et 19, tu appelles la fonction Ecrire1a19().
- Sinon, tu écris (selon le chiffre des dizaines) "vingt", "trente", "quarante", "cinquante", "soixante", "soixante", "quatre-vingt" ou "quatre-vingt". Si la valeur est 80 pile et que lePlusADroite est true, tu rajoutes un "s". Si le dernier chiffre est un 1 sauf 91, tu rajoutes " et ". Si le dernier chiffre n'est ni 0 ni 1, tu rajoutes "-".
- Si le chiffre des dizaines est différent de 0, 7 et 9, tu appelles Ecrire1a19() sur le dernier chiffre. Si le chiffre des dizaines est 7 ou 9, tu appelles Ecrire1a19() sur le dernier chiffre + 10.

string Ecrire1a19(int nombre);

Tu marques directement la valeur :
un, deux, trois, quatre... ...dix-huit, dix-neuf

Bon, avec ça, tu ne devrais pas avoir le moindre problème

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
0
Rejoignez-nous