[console][dev-c++ 4]lirenombre v2.2

Soyez le premier à donner votre avis sur cette source.

Vue 3 150 fois - Téléchargée 190 fois

Description

Ce programme retourne un nombre ecrit en lettre aprés
avoir rentré un nombre entier non signé en chiffre
compris entre 0 et 9999.

Source / Exemple :


// Fichiers d'en-tête (header)
#include <iostream.h>

// Entrée du programme ( Fonction principale "main" )
int main(void)
{
    // Déclaration et initialisation de "x" chaine de caractéres
    char *Unite[9];
    Unite[0] = "zero";
    Unite[1] = "un";
    Unite[2] = "deux";
    Unite[3] = "trois";
    Unite[4] = "quatre";
    Unite[5] = "cinq";
    Unite[6] = "six";
    Unite[7] = "sept";
    Unite[8] = "huit";
    Unite[9] = "neuf";
    // Déclaration et initialisation de "x" chaine de caractéres
    char *Bizzare[6];
    Bizzare[0] = "";
    Bizzare[1] = "onze";
    Bizzare[2] = "douze";
    Bizzare[3] = "treize";
    Bizzare[4] = "quatorze";
    Bizzare[5] = "quinze";
    Bizzare[6] = "seize";
    // Déclaration et initialisation de "x" chaine de caractéres
    char *Dizaine[9];
    Dizaine[0] = "";
    Dizaine[1] = "dix ";
    Dizaine[2] = "vingt ";
    Dizaine[3] = "trente ";
    Dizaine[4] = "quarante ";
    Dizaine[5] = "cinquante ";
    Dizaine[6] = "soixante ";
    Dizaine[7] = "soixante-dix ";
    Dizaine[8] = "quatre-vingt ";
    Dizaine[9] = "quatre-vingt-dix ";

    cout << "Programmer par \"Duckz\"\n\nCe programme prend en compte\nles nombres entier non signe\nde 0 a 9999.";

    // Boucle infini ( Boucle "for" non paramétré )
    for(;;)
    {
        // Déclaration et initialisation des variables
        unsigned int a = 0,
                     b = 0,
                     c = 0,
                     d = 0,
                     y = 0,
                     z = 0;
        // Affiche à l'écran...
        cout << "\n\nEntrez un chiffre : ";
        // Enregistre dans la variable "a" l'entrée du clavier
        cin >> a;

        if ( a > 9999 )
            cout << "\nCe programme ne traite pas\nles nombres superieur a 9999";
        else
        {
            // Affiche à l'écran...
            cout << "Votre chiffre en lettre : ";
            if ( a == 0 )
                cout << Unite[0];
            else
            {
                d = a / 1000;
                a %= 1000;
                c = a / 100;
                a %= 100;
                b = a / 10;
                a %= 10;

                // Serie de conditionnement
                if ( a > 0 )  y = 0;
                if ( b > 0 )  y = 1;
                if ( c > 0 )  y = 2;
                if ( d > 0 )  y = 3;

                // Traitement selon le conditionnement
                switch (y)
                {
                    case 3 :
                            if ( d == 1 )
                                cout << "mille ";
                            else
                                cout << Unite[d] << " mille ";
                            if ( c == 0 && b == 0 && a == 0 )
                                break;
                    case 2 :
                            if ( c == 1 )
                                cout << "cent ";
                            if ( c > 1 )
                                cout << Unite[c] << " cents ";
                            if ( b == 0 && a == 0 )
                                break;
                    case 1 :
                            if ( b == 1 && a > 0 && a < 7 )
                            {
                                cout << Bizzare[a];
                                break;
                            }
                            if ( b == 7 && a > 0 && a < 7 )
                            {
                                if ( a == 1 )
                                    cout << Dizaine[6] << "et " << Bizzare[a];
                                else
                                    cout << Dizaine[6] << Bizzare[a];
                                break;
                            }
                            if ( b == 9 && a > 0 && a < 7 )
                            {
                                if ( a == 1 )
                                    cout << Dizaine[8] << Bizzare[a];
                                break;
                            }
                            if ( b > 0 && b != 8 && a == 1 )
                                cout << Dizaine[b] << "et ";
                            else
                                cout << Dizaine[b];
                    case 0 :
                            if ( a == 0 )
                                break;
                            cout << Unite[a];
                                break;
                }
            }
        }
    }
return 0;
}

Conclusion :


Nouvelle version:
. LireNombre v2.2

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
77
Date d'inscription
lundi 15 avril 2002
Statut
Membre
Dernière intervention
16 juin 2004

Je vois que tu as fait tenu compte des diverses remarques qu'on t'as faites et ça c digne d'un bon programmeur...
Je t'ai mis 7.
H@ldwin.
Messages postés
11
Date d'inscription
samedi 5 octobre 2002
Statut
Membre
Dernière intervention
24 octobre 2002

nouvelle version: LireNombre v2.2

Plus de goto. En plus c'etais trop simple de les enlevés............
Messages postés
11
Date d'inscription
samedi 5 octobre 2002
Statut
Membre
Dernière intervention
24 octobre 2002

Apparement g ete trop vite pour passer de la v1.0 a la v2.0 car la v1.0 n'avez pas de bug de bug de conversion des chiffre en lettre.

Ensuite mettre un while(1) pour faire comme tout le monde j'aime pas ça, mettre for(;;) c mon droit et ca n apporte pas de faute.
Quand au goto je doit etre dans mon tort car je me fais taper sur les doigts a chaque fois, sur cette source je n ais pas trouver le moyen de les remplacer par autre chose si qq1 trouve une solution elle sera la bienvenu

desolé pour le bug du a la v2.0 il sera corrigé dans la v2.1
Messages postés
77
Date d'inscription
lundi 15 avril 2002
Statut
Membre
Dernière intervention
16 juin 2004

Excuse moi de te reprendre GoldenEye sur ton message écrit à Duckz mais son prog ne marche pas.... Il faut simplement taper l'un de ces chiffres: 101(ou 201...)
ou 9000( ou 8000...) et a ce moment vous verrez apparaitre de beaux gros bugs!!! Des bugs de ce niveau auraient du etre tester bien avant d'oser mettre ce "prog" en ligne...
Je t'ecris aussi, Duckz, pour tes fameux et horribles goto evidemment!!!!
Les goto c pour du basic alors si tu veux ecrire des goto change de compilo...Les goto sont les premieres choses a bannir du langage C. Pis si tu pense que c bien ici qu'il fo utiliser tes goto, ben je pense pas que c comme sa que l'on progresse en prog ou en tout autre matiere. Je n'ai a ce jour pas encore vu un pb algorithmique resolu d'une seule et unique maniere en mettant en avant des goto.
Ensuite tu dis :"g opté pour for(;;) car je ne compte pas sortir de la boucle. on peut sortir de while(1) avec un break". A moins que je ne soit pas au courant mais je crois que c toi qui ecrit le code donc tu peux tres bien ecrire un while(1) sans mettre de break ( dans le while), non?
Bon sur ce je te laisse en esperant qu'au lieu de faire des reproches aux autres tu prennes ce temps pour faire des progs propres....
H@ldwin.
Messages postés
11
Date d'inscription
samedi 5 octobre 2002
Statut
Membre
Dernière intervention
24 octobre 2002

3/ [suite] Par ailleur, cette faute de l'utilisation abusive du else m'avais conduit a creé une source l'ourde et complexe ( la v1.0 ) qui m'avais induit en erreur en
m'empéchant de pensé a lutilisation des switch; ne faite pas la même erreur !!!
Afficher les 11 commentaires

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.