Probleme programme en c

Résolu
irihm Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   -  
Nabla's Messages postés 18203 Date d'inscription   Statut Contributeur Dernière intervention   -
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 6917 Date d'inscription   Statut Membre Dernière intervention   1 204
 
Bonjour,

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

;o)
0
Nabla's Messages postés 18203 Date d'inscription   Statut Contributeur Dernière intervention   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 6917 Date d'inscription   Statut Membre Dernière intervention   1 204 > Nabla's Messages postés 18203 Date d'inscription   Statut Contributeur Dernière intervention  
 
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 18203 Date d'inscription   Statut Contributeur Dernière intervention   3 193 > Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention  
 
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 91 Date d'inscription   Statut Membre Dernière intervention   7
 
Merci,

J'ai plus qu'a corriger le reste de mes erreurs ^^.
0
irihm Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   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 18203 Date d'inscription   Statut Contributeur Dernière intervention   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 18203 Date d'inscription   Statut Contributeur Dernière intervention   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 1466 Date d'inscription   Statut Membre Dernière intervention   13 > Nabla's Messages postés 18203 Date d'inscription   Statut Contributeur Dernière intervention  
 
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 91 Date d'inscription   Statut Membre Dernière intervention   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 91 Date d'inscription   Statut Membre Dernière intervention   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 91 Date d'inscription   Statut Membre Dernière intervention   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 91 Date d'inscription   Statut Membre Dernière intervention   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 18203 Date d'inscription   Statut Contributeur Dernière intervention   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 91 Date d'inscription   Statut Membre Dernière intervention   7
 
J'ai trouvé mon erreur, une accolade mal placer. ^^'
0
irihm Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   7
 
Merci pour votre aide.
0
Nabla's Messages postés 18203 Date d'inscription   Statut Contributeur Dernière intervention   3 193
 
on place tout ca en résolu ?
0
irihm Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   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 18203 Date d'inscription   Statut Contributeur Dernière intervention   3 193
 
essayes avec ces scores:
20,30,30,30
0
irihm Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   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 18203 Date d'inscription   Statut Contributeur Dernière intervention   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 91 Date d'inscription   Statut Membre Dernière intervention   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 18203 Date d'inscription   Statut Contributeur Dernière intervention   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 91 Date d'inscription   Statut Membre Dernière intervention   7
 
Sa marche, je peut le mettre ne résolue.
Merci beaucoup.
0
Nabla's Messages postés 18203 Date d'inscription   Statut Contributeur Dernière intervention   3 193
 
et un programmeur de plus en piste ;)
0