IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

Programme qui n'affiche rien


Sujet :

C++

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 11
    Points : 2
    Points
    2
    Par défaut Programme qui n'affiche rien
    Bonjour!!
    L'intitulé de mon programme est assez compliqué.
    Pour chaque entier < 9999, il doit effectuer l’algorithme suivant:
    le décomposer pour avoir ses chiffres (ex 4198 devient 4,1,9,8)
    ordonner par ordre décroissant ses chiffres (4,1,9,8 devient 9,8,4,1)
    -------------------croissant----------------(4,1,9,8 devient 1,4,8,9)
    faire la soustraction des deux (9841-1489)

    Une propriété non démontrée dit qu'au bout de 7 transformations au maximum on tombe sur 6174, peut importe le nombre.
    Si on rentre un entier a moins de 4 chiffres, il est complété par des 0: 1 devient 0001.

    Mon programme doit compter pour tous les entiers compris entre 0 et 9999 le nombre de transformations et les mettre dans un tableau. (ex: 1 nombre a 0 transformations, xxx ont besoin de 1 transformation, yyy de 2 etc)

    Mon programme ne m'affiche rien:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    #include <iostream>
    using namespace std;
    const int nmax=4;
    const int mmax=8;
    void permut (int &a, int &b);
    void decompose (int nb, int t[],int &n);
    void tri (int t[], int n);
    void recsous (int t[], int n, int &result);
    void affiche (int t[],int n);
     
    int main()
    {
        int nb,n=nmax,result,b=0,x,m=mmax,i;
        int t[nmax], tab[mmax];
        for (int i=0;i<m;i++)
        {
            tab[i]=0;
        }
     
        for (nb=1;nb<9999;nb++)
        {
            b=0;
            if (nb!=1111 && nb!=2222 && nb!=3333 && nb!=4444 && nb!=5555 && nb!=6666 
                    && nb!=7777 && nb!=8888 && nb!=9999)
            {
                while (nb=!6174)
                {
     
                    decompose (nb,t,n);
                    tri (t,n);
                    recsous (t,n,result);
                    nb=result;
                    b=b+1;
                }
                tab[b]=tab[b]+1;
     
            }
     
     
        }
        affiche (tab,m);
     
        system ("pause");
    }
     
    void permut (int &a, int &b)
    {
        int aux;
        aux=a;
        a=b;
        b=aux;
    }
    void decompose (int nb, int t[],int &n)
    {
        int i=0;
        for (i;i<n;i++)
        {
            t[i]=0;
        }
        i=0;
        while (nb!=0)
        {
            t[i]=nb%10;
            nb=nb/10;
            i++;
        }
    }
    void tri (int t[], int n)
    {
        int i=0,j=0;
        for (i=0;i<n-1;i++)
        {
            for(j=i+1;j<n;j++)
            {
                if(t[i]>t[j])
                {
                    permut (t[i],t[j]);
                }
            }
        }
    }
    void recsous (int t[], int n, int &result)
    {
        int i=0,nb1=0,nb2=0,p=1;
        for (i;i<n;i++)
        {
            nb1=t[i]*p+nb1;
            nb2=t[n-i-1]*p+nb2;
            p=p*10;
        }
        result=nb1-nb2;
    }
    void affiche (int t[],int n)
    {
        cout<<"Voila le tableau"<<endl;
        for (int i=0;i<n;i++)
        {
            cout<<t[i]<<endl;
        }
    }

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut
    Merci de mettre ton code enter les balises idoines (bouton #) et d'indenter correctement.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    l'indenter correctement?

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    L'indentation est déjà meilleure maintenant que j'ai ajouté les balises CODE.
    Quelle erreur rencontres-tu ? Boucle infinie ?
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    le programme s'ouvre mais n'affiche rien (pas de probleme a la compilation)

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut
    Commence déjà par utiliser des vecteurs, plutôt que des tableaux.
    Ça simplifiera ton code.

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    Je debute et en fait l'exercice demande des tableaux.
    Les vecteurs on n'a pas encore vu

  8. #8
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut
    Appelle affiche() juste après avoir rempli le tableau, et dis-nous si ça affiche quelque chose.

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    oui ca defile sans s'arreter

  10. #10
    Expert confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Points : 4 442
    Points
    4 442
    Par défaut
    Citation Envoyé par azolan Voir le message
    Tu voulais sans doute écrire nb != 6174.

    actuellement tu as une boucle infinie, la condition est à comprendre comme ça:
    6174 => différent de 0 donc vaut true
    !6174 => false
    nb = !6174 => nb = (int)false => nb = 0
    Tu ne rentres donc jamais dans cette boucle while, mais tu modifies nb et donc ta boucle for est infinie.

    edit: enfin dans tous les cas, il faut modifier une copie de nb, et pas nb directement, sinon tu ne sortira jamais de ta boucle for.

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    oui le point d'exclamation c'teait une faute de frappe.

    Par contre pour le nb ou il fallait faire une copie, j'avoue que j'ai pas assez réfléchi... Merci beaucoup!!!!!! (là ça marche)

Discussions similaires

  1. Programme qui n'affiche rien
    Par Premium dans le forum OpenGL
    Réponses: 2
    Dernier message: 03/12/2006, 21h43
  2. Programme qui m'affiche n'importe quoi
    Par Gryzzly dans le forum C
    Réponses: 8
    Dernier message: 02/01/2006, 19h25
  3. Réponses: 18
    Dernier message: 13/12/2005, 13h27
  4. [debutant]programme qui ne fait rien.
    Par Battosaiii dans le forum Interfaces Graphiques en Java
    Réponses: 10
    Dernier message: 04/12/2005, 22h19
  5. [LG]Programme qui n'affiche rien
    Par ousunas dans le forum Langage
    Réponses: 4
    Dernier message: 17/02/2004, 19h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo