Probleme programme en c

Résolu
irihm Messages postés 97 Statut Membre -  
Nabla's Messages postés 20731 Statut Contributeur -
Bonjour,

J'essaye de créer un programme en c mais le logiciel que j'utilise "code blox" m'affiche a chaque fois un problème avec une parenthèse après mon if.

Le but de ce programme est de savoir en entrant les pourcentage de réussite de 4 candiadts politique si le candidat numéro 1 est élue, en ballotage favorable ou en ballotage défavorable.

Voici le programme que j'ai tapé:

#include <stdio.h>

int main(void)



{
int C1,C2,C3,C4;

printf("Veuillez rentrer le score des 4 candidats");
scanf("%d,%d,%d,%d",&C1,&C2,&C3,&C4);

if(C1>50%)
{

printf("Le cancidat est élu au premier tour");

else

if((C1<12.5%) || (C2>50%) || (C3>50%) || (C4>50%))
{

printf("le candidat est battu");

else

if((C1>C2) && (C1>C3) && (C1>C4))
{
printf("le candidat est en ballotage favorable");

else

printf("le candidat est en ballotage défavorable");

}
}
}


return(0);
}





Si vous voyez comment j'arriverais à résoudre ce problème.
Merci d'avance pour votre aide cordialement.

17 réponses

Polux31 Messages postés 7219 Statut Membre 1 204
 
Bonjour,

Enlève tous les "%" de ton code.

;o)
0
Nabla's Messages postés 20731 Statut Contributeur 3 193
 
pas tous ...

scanf("%d,%d,%d,%d",&C1,&C2,&C3,&C4);


if((C1<12.5%) || (C2>50%) || (C3>50%) || (C4>50%))

seulement ceux qui sont dans les if !
ecux du scanf doivent rester

et merci de poster le nouveau code en utilisant les balises < code > (a coté de souligné), pour qu'on ai l'indentation
0
Polux31 Messages postés 7219 Statut Membre 1 204 > Nabla's Messages postés 20731 Statut Contributeur
 
oups ... exact ... c'était évident pour moi. Tu fais bien de le préciser.

Merci Nabla's d'avoir rectifié.

;o)
0
Nabla's Messages postés 20731 Statut Contributeur 3 193 > Polux31 Messages postés 7219 Statut Membre
 
oui, je sais, c'est tellement gros qu'on pense pas qu'il puisse les enlever, mais comme il est débutant, je préférais faire une reflexion pas très utile ;)

s'il y a des erreurs, avec l'indentation on verra mieux ...
0
irihm Messages postés 97 Statut Membre 7
 
Merci,

J'ai plus qu'a corriger le reste de mes erreurs ^^.
0
irihm Messages postés 97 Statut Membre 7
 
Voici le nouveau code:

#include <stdio.h>

int main(void)



{
    int C1,C2,C3,C4;

    printf("Veuillez rentrer le score des 4 candidats:/n");
    scanf("%d,%d,%d,%d",&C1,&C2,&C3,&C4);


    if(C1>50)
    {

        printf("Le cancidat est élu au premier tour");

        else

        if((C1<12.5) || (C2>50) || (C3>50) || (C4>50))
        {

            printf("le candidat est battu");

            else

            if((C1>C2) && (C1>C3) && (C1>C4))
            {
                printf("le candidat est en ballotage favorable");

                else

                printf("le candidat est en ballotage défavorable");

            }
        }
    }


return(0);
}
0
Nabla's Messages postés 20731 Statut Contributeur 3 193
 
deja, à première vu, meme si ca devrait etre qu'un warning:
int C1,C2,C3,C4;

if((C1<12.5) || (C2>50) || (C3>50) || (C4>50))
0
Nabla's Messages postés 20731 Statut Contributeur 3 193
 
ensuite:

        if((C1<12.5) || (C2>50) || (C3>50) || (C4>50))
        {

            printf("le candidat est battu");

            else                               //nabla's: c'est quoi ce else ??? 

            if((C1>C2) && (C1>C3) && (C1>C4))
            {
                printf("le candidat est en ballotage favorable");

                else                         // et celui ci ???

                printf("le candidat est en ballotage défavorable");

            }
        }


a mon avis, tu devrais remplacer tes else par des } else {
car tu ne fermes pas ton if, et tu n'ouvres pas ton else ...

la syntaye, c'est pas
if 
{
    //blabla
    else
    //blabla
}


mais bien
if 
{
    //blabla
}
else
{
    //blabla
}
0
winix Messages postés 1486 Statut Membre 13 > Nabla's Messages postés 20731 Statut Contributeur
 
il me semble aussi que c'est mieux comme ça:

code:
int machin;

if(machin) {
                  blablaba;
                    }
      else {
                  blablaba;
                    }


que:

code:
if(machin){
                 blablabla;


      else { 
                 blablabla;
             }
         }


si tu fais ça il me semble que t'as un problème avec le 'else' qui est dans t'as condition 'if(machin)"
0
irihm Messages postés 97 Statut Membre 7
 
Les erreurs doivent être a cause des if et else mais je vois pas pourquoi.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
irihm Messages postés 97 Statut Membre 7
 
non pas de warning juste 2 erreurs, avec le premier else et avec la dernière accolade pour fermer le programme.
0
irihm Messages postés 97 Statut Membre 7
 
D'accords mais je dois mettre plusieurs if et else et si je ferme le premier if je sort de la boucle non?
0
irihm Messages postés 97 Statut Membre 7
 
Voila le programme modifier en suivant tes conseil:

#include <stdio.h>

int main(void)



{
    int C1,C2,C3,C4;                //les différentes variables

                                    //Débuts du programme

    printf("Veuillez rentrer le score des 4 candidats:/n");
    scanf("%d,%d,%d,%d",&C1,&C2,&C3,&C4);


    if(C1>50)
    {

        printf("Le cancidat est élu au premier tour");
    }
        else
        {

            if((C1<12.5) || (C2>50) || (C3>50) || (C4>50))
            {

                printf("le candidat est battu");

            }

                else
                {

                    if((C1>C2) && (C1>C3) && (C1>C4))
                    {
                        printf("le candidat est en ballotage favorable");

                    }

                            else
                            {

                                printf("le candidat est en ballotage défavorable");

                            }

            }
        }
    }


return(0);
}


Maintenant j'ai un warning pour la dernière accolade et une erreur avec le return(0)
0
Nabla's Messages postés 20731 Statut Contributeur 3 193
 
a mon avis, c'est ca que tu veux faire:

#include <stdio.h>

int main(void)



{
    int C1,C2,C3,C4;

    printf("Veuillez rentrer le score des 4 candidats:/n");
    scanf("%d,%d,%d,%d",&C1,&C2,&C3,&C4);


    if(C1>50)
    {

        printf("Le cancidat est élu au premier tour");
    }
    else
    {
        if((C1<12.5) || (C2>50) || (C3>50) || (C4>50))
        {
            printf("le candidat est battu");
        }
        else
        {
            if((C1>C2) && (C1>C3) && (C1>C4))
            {
                printf("le candidat est en ballotage favorable");
            }
            else
            {
                printf("le candidat est en ballotage défavorable");
            }
        }
    }


return(0);
}



quand tu fais un else, tu dois fermer le if auquel il se raporte, et le else suit imédiatement la fermeture du if. Sinon il ne sait pas a quoi se raporte le else

dans ton cas, comem les if et else ne sont suivi que d'uen isntruction, toutes tes acolades sont facultatives, mais prends l'habitude de les mettre
0
irihm Messages postés 97 Statut Membre 7
 
J'ai trouvé mon erreur, une accolade mal placer. ^^'
0
irihm Messages postés 97 Statut Membre 7
 
Merci pour votre aide.
0
Nabla's Messages postés 20731 Statut Contributeur 3 193
 
on place tout ca en résolu ?
0
irihm Messages postés 97 Statut Membre 7
 
Euh, pas encore je le test mais la boucle:

else
                {

                    if((C1>C2) && (C1>C3) && (C1>C4))
                    {
                        printf("le candidat est en ballotage favorable");
                    }

                    else
                    {

                    printf("le candidat est en ballotage defavorable");

                    }


ne s'exécute pas, il n'y a que les deux première boucle qu'il le sont, soit il est battu soit il gagne, je comprends pas ou peut être l'erreur :/

Je sais je suis pénible. ^^'
0
Nabla's Messages postés 20731 Statut Contributeur 3 193
 
essayes avec ces scores:
20,30,30,30
0
irihm Messages postés 97 Statut Membre 7
 
Le candidat est encore battu :/

Voici le programme complet:

#include <stdio.h>

int main(void)



{
    int C1,C2,C3,C4;                //les différentes variables

                                    //Débuts du programme

    printf("Veuillez rentrer le score des 4 candidats:  ");
    scanf("%d,%d,%d,%d",&C1,&C2,&C3,&C4);


    if(C1>50)                       //Première comparaison
    {

        printf("Le cancidat est elu au premier tour");
    }
    else
    {

            if((C1<12.5) || (C2>50) || (C3>50) || (C4>50))      //Deuxième comparaison
            {

            printf("le candidat est battu");
            }
                else
                {

                    if((C1>C2) && (C1>C3) && (C1>C4))
                    {
                        printf("le candidat est en ballotage favorable");
                    }

                    else
                    {

                    printf("le candidat est en ballotage defavorable");
                    }
                }
    }

return(0);
}
0
Nabla's Messages postés 20731 Statut Contributeur 3 193
 
rajoutes moi un:
printf("%d,%d,%d,%d",C1,C2,C3,C4);
pour verifier que tu récupères bien les bonnes valeurs


et changes moi ca: (C1<12.5) en (C1<13) , ou passes toute l'application en float
0
irihm Messages postés 97 Statut Membre 7
 
en effet les valeur de C2, C3 et C4 sont un plus grande d'environ quelques millions de leur valeur initiale ^^'
Chose que je ne trouve pas logique car elles leur valeurs sont déjà définit au début du programme.
0
Nabla's Messages postés 20731 Statut Contributeur 3 193
 
fais moi le scanf comme ca:
scanf("%d %d %d %d",&C1,&C2,&C3,&C4);

et tu rentres donc sans les virgules ...
0
irihm Messages postés 97 Statut Membre 7
 
Sa marche, je peut le mettre ne résolue.
Merci beaucoup.
0
Nabla's Messages postés 20731 Statut Contributeur 3 193
 
et un programmeur de plus en piste ;)
0