Qu'est-ce qui cloche ? (programme C)

Fermé
robi61 - 19 juil. 2010 à 15:43
marksman53 Messages postés 442 Date d'inscription mercredi 31 mars 2010 Statut Membre Dernière intervention 29 janvier 2011 - 19 juil. 2010 à 17:47
Bonjour,

Mon code ne fonctionne pas. Pouvez vous me dire ce qui ne vas pas ?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    int trois[2] = {1};
    int quatre[3] = {1};
    int quatrei = 0;
    int troisi = 0;
    int un = 2;
    int trouv = 0;
    int dans = 0;
    int i = 0;

    while (trouv != 1)
    {
        if(trois[0] != un && trois[1] != un && trois[2] != un)
        {
            while(dans != 1)
            {

                while(i != 100) //boucle pour savoir à combien est égal quatre[0].
                {
                    if(quatre[0] == i)
                    {
                        if(i != 0)
                        {
                            quatrei = i;
                            i = 99;
                        }
                        else
                        {
                            i = 99;
                        }
                    }
                    i++;
                }
                i = 0;

                while(i != 100) //boucle pour quatre[1]
                {
                    if(quatre[1] == i)
                    {
                        if(i != 0)
                        {
                            i = i*10;
                            quatrei = quatrei + i;
                            i = 99;
                        }
                        else
                        {
                            i = 99;
                        }
                    }
                    i++;
                }
                i = 0;

                while(i != 100) //boucle pour quatre[2]
                {
                    if(quatre[2] == i)
                    {
                        if(i != 0)
                        {
                            i = i*100;
                            quatrei = quatrei + i;
                            i = 99;
                        }
                        else
                        {
                            i = 99;
                        }
                    }
                    i++;
                }
                i = 0;

                while(i != 100) //boucle pour quatre[3]
                {
                    if(quatre[3] == i)
                    {
                        if(i != 0)
                        {
                            i = i*1000;
                            quatrei = quatrei + i;
                            i = 99;
                        }
                        else
                        {
                            i = 99;
                        }
                    }
                    i++;
                }
                i = 0;

                while(i != 100) //boucle pour trois[0]
                {
                    if(trois[0] == i)
                    {
                        if(i != 0)
                        {
                            troisi = i;
                            i = 99;
                        }
                        else
                        {
                            i = 99;
                        }
                    }
                    i++;
                }
                i = 0;

                 while(i != 100) //boucle pour trois[1]
                {
                    if(trois[1] == i)
                    {
                        if(i != 0)
                        {
                            i = i*10;
                            troisi = troisi + i;
                            i = 99;
                        }
                        else
                        {
                            i = 99;
                        }
                    }
                    i++;
                }
                i = 0;

                 while(i != 100) //boucle pour trois[2]
                {
                    if(trois[2] == i)
                    {
                        if(i != 0)
                        {
                            i = i*100;
                            troisi = troisi + i;
                            i = 99;
                        }
                        else
                        {
                            i = 99;
                        }
                    }
                    i++;
                }

                if(troisi*un == quatrei)
                {
                if(quatre[0] != un && quatre[1] != un && quatre[2] != un && quatre[3] != un && quatre[0] != trois[0] && quatre[0] != trois[1] && quatre[0] != trois[2] && quatre[1] != trois[0] && quatre[1] != trois[1] && quatre[1] != trois[2] && quatre[2] != trois[0] && quatre[2] != trois[1] && quatre[2] != trois[2] && quatre[3] != trois[0] && quatre[3] != trois[1] && quatre[3] != trois[2] && quatre[0] != quatre[1] && quatre[0] != quatre[2] && quatre[0]!= quatre[3] && quatre[1] != quatre[2] && quatre[1] != quatre[3] && quatre[2] != quatre[3])
                {
                    if(trouv == 2)
                    {
                        trouv = 1;
                    }

                    if(trouv == 0)
                    {
                        trouv = 2;
                    }
                    printf("%d x %d = %d\n", trois, un, quatre);
                }
                }
                else
                {
                printf("%d x %d = %d\n", trois, un, quatre);
                    if(quatre[0] >= 9)
                    {
                        quatre[0] = 0;
                        quatre[1]++;
                    }
                    if(quatre[1] >= 9)
                    {
                        quatre[1] = 0;
                        quatre[2]++;
                    }
                    if(quatre[2] >= 9)
                    {
                        quatre[2] = 0;
                        quatre[3]++;
                    }
                    if(quatre[3] >= 9)
                    {
                        quatre[3] = 1;
                        quatre[2] = 0;
                        quatre[1] = 0;
                        quatre[0] = 0;
                        trois[0]++;
                    }
                    if(trois[0] >= 9)
                    {
                        trois[0] = 0;
                        trois[1]++;
                    }
                    if(trois[1] >= 9)
                    {
                        trois[1] = 0;
                        trois[2]++;
                    }
                    if(trois[2] >= 9)
                    {
                        trois[2] = 1;
                        trois[1] = 0;
                        trois[0] = 0;
                        un++;
                    }
                    if(un >= 9)
                    {
                        dans = 1;
                        trouv = 1;
                    }
                    quatre[0]++;
                }

                if(trouv == 1) //si tout trouvé quitter la boucle while(dans != 1)
                {
                    dans = 1;
                }
            } //while(dans != 1)
        } //if comparaison trois et un
    } //while tout trouvé

    return 0;
}


Désolé pour le if à rallonge.
Merci d'avance.

1 réponse

marksman53 Messages postés 442 Date d'inscription mercredi 31 mars 2010 Statut Membre Dernière intervention 29 janvier 2011 36
Modifié par marksman53 le 20/07/2010 à 09:44
Ca serait bien d'avoir les erreurs aussi....

if(trois[0] != un && trois[1] != un && trois[2] != un)
Ici tu ne peux pas mêttre une condition d'égalité avec une chaine de caractère en C de cette façon. De plus tu cherches une inégalité sur une seule case et tu met un truc à 2 cases au moins après.

Enfin bref, ce truc compilera jamais.
Recommence à lire des tuto en C : https://openclassrooms.com/fr/courses/19980-apprenez-a-programmer-en-c
Et compile ton programme ou des morceaux au lieu de tout faire d'un coup comme ça et compiler après, tu va jamais y arriver.

Pour ton if à rallonge tu pouvais faire une boucle.
0