Probleme programme en c

Résolu/Fermé
irihm Messages postés 91 Date d'inscription mardi 17 juin 2008 Statut Membre Dernière intervention 14 mai 2012 - 17 févr. 2010 à 17:17
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 - 17 févr. 2010 à 19:16
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 mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
17 févr. 2010 à 17:21
Bonjour,

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

;o)
0
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 193
17 févr. 2010 à 17:25
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 mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204 > Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014
17 févr. 2010 à 17:27
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 mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 193 > Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016
17 févr. 2010 à 17:29
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 mardi 17 juin 2008 Statut Membre Dernière intervention 14 mai 2012 7
17 févr. 2010 à 17:25
Merci,

J'ai plus qu'a corriger le reste de mes erreurs ^^.
0
irihm Messages postés 91 Date d'inscription mardi 17 juin 2008 Statut Membre Dernière intervention 14 mai 2012 7
17 févr. 2010 à 17:29
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 mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 193
17 févr. 2010 à 17:33
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 mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 193
17 févr. 2010 à 17:37
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 vendredi 6 juin 2008 Statut Membre Dernière intervention 18 mai 2011 13 > Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014
17 févr. 2010 à 18:26
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 mardi 17 juin 2008 Statut Membre Dernière intervention 14 mai 2012 7
17 févr. 2010 à 17:32
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 mardi 17 juin 2008 Statut Membre Dernière intervention 14 mai 2012 7
17 févr. 2010 à 17:37
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 mardi 17 juin 2008 Statut Membre Dernière intervention 14 mai 2012 7
17 févr. 2010 à 17:39
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 mardi 17 juin 2008 Statut Membre Dernière intervention 14 mai 2012 7
17 févr. 2010 à 17:45
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 mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 193
17 févr. 2010 à 17:47
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 mardi 17 juin 2008 Statut Membre Dernière intervention 14 mai 2012 7
17 févr. 2010 à 17:48
J'ai trouvé mon erreur, une accolade mal placer. ^^'
0
irihm Messages postés 91 Date d'inscription mardi 17 juin 2008 Statut Membre Dernière intervention 14 mai 2012 7
17 févr. 2010 à 17:59
Merci pour votre aide.
0
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 193
17 févr. 2010 à 18:00
on place tout ca en résolu ?
0
irihm Messages postés 91 Date d'inscription mardi 17 juin 2008 Statut Membre Dernière intervention 14 mai 2012 7
17 févr. 2010 à 18:06
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 mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 193
17 févr. 2010 à 18:10
essayes avec ces scores:
20,30,30,30
0
irihm Messages postés 91 Date d'inscription mardi 17 juin 2008 Statut Membre Dernière intervention 14 mai 2012 7
17 févr. 2010 à 18:13
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 mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 193
17 févr. 2010 à 18:21
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 mardi 17 juin 2008 Statut Membre Dernière intervention 14 mai 2012 7
17 févr. 2010 à 18:25
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 mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 193
17 févr. 2010 à 18:32
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 mardi 17 juin 2008 Statut Membre Dernière intervention 14 mai 2012 7
17 févr. 2010 à 18:42
Sa marche, je peut le mettre ne résolue.
Merci beaucoup.
0
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 193
17 févr. 2010 à 19:16
et un programmeur de plus en piste ;)
0