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

Soyez le premier à donner votre avis sur cette source.

Vue 3 502 fois - Téléchargée 223 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
skone007 Messages postés 166 Date d'inscription mercredi 24 avril 2002 Statut Membre Dernière intervention 23 juin 2009
17 oct. 2002 à 16:54
y a un bug quand on met des nombres a vigules. et tu peut obimiser en utilisant switch()
...
cs_kjus Messages postés 269 Date d'inscription mercredi 24 avril 2002 Statut Membre Dernière intervention 9 juin 2003
17 oct. 2002 à 22:04
les gotos c'est moyennement propre ;)
sinon ca marche très bien. (faut aussi juste faire un test si le nombre est négatif)
cs_GoldenEye Messages postés 527 Date d'inscription vendredi 14 septembre 2001 Statut Membre Dernière intervention 6 octobre 2008 4
18 oct. 2002 à 10:19
ça marche mais c'est bcp trop long pour un prog aussi simple.
Même remarque que kjus. N'hésite pas à retravailler ton code et à actualiser ta source sur le site
à+
Duckz Messages postés 11 Date d'inscription samedi 5 octobre 2002 Statut Membre Dernière intervention 24 octobre 2002
23 oct. 2002 à 17:15
Nouvelle Version : LIRENOMBRE v2.0

J'ais totalement reforgé et optimisé mon code au maximum.
Le "Bug" ( si on entre autre chose qu'un nombre entier non signé ) et toujours présent.
Prochainement, peut etre, la version v3.0 permettant de gérer des nombre beaucoup plus élevés.
cs_GoldenEye Messages postés 527 Date d'inscription vendredi 14 septembre 2001 Statut Membre Dernière intervention 6 octobre 2008 4
24 oct. 2002 à 15:21
c'est mieux mais il y a encore des améliorations à apporter
1/ Pas de goto. Débrouille toi mais vire les goto Flag1 (ex : while(je-veux_continuer){...}
2/ for(;;). On utilise généralement while(1)
3/ Les séquences de condition ne sont pas efficace
if(a>0)...
else if(a>...)
else...
On ne refait pas la comparaison à chaque fois

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.