Probleme programme en c
Résolu
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.
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
Résumé de la discussion
Le cœur du fil porte sur un programme en C qui détermine le statut d'un candidat politique à partir des pourcentages des quatre candidats et des règles du premier tour ou ballotage. Plusieurs messages pointent des erreurs de syntaxe et de logique dans le code initial, notamment des parenthèses manquantes, des accolades mal placées et des conditions if/else mal imbriquées. Des propositions de correction expliquent comment structurer proprement les blocs conditionnels, ajuster les comparaisons (50 % et autres seuils) et clarifier l’usage de scanf pour lire les valeurs. En parallèle, des versions corrigées illustrent l’ordre des tests et l’emploi d’un flux logique cohérent, afin d’obtenir un résultat fiable sans avertissements.
-
Contributeuret un programmeur de plus en piste ;)
-
Sa marche, je peut le mettre ne résolue.
Merci beaucoup. -
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. -
Contributeurrajoutes 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 -
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); } -
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. ^^' -
Contributeuron place tout ca en résolu ?
-
Merci pour votre aide.
-
J'ai trouvé mon erreur, une accolade mal placer. ^^'
-
Contributeura 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 -
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) -
D'accords mais je dois mettre plusieurs if et else et si je ferme le premier if je sort de la boucle non?
-
non pas de warning juste 2 erreurs, avec le premier else et avec la dernière accolade pour fermer le programme.
-
Les erreurs doivent être a cause des if et else mais je vois pas pourquoi.
-
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); }-
-
Contributeurensuite:
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 pasif { //blabla else //blabla }
mais bienif { //blabla } else { //blabla } -
@Nabla'sil 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)"
-
-
Merci,
J'ai plus qu'a corriger le reste de mes erreurs ^^. -
Bonjour,
Enlève tous les "%" de ton code.
;o)-
Contributeurpas 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 -
@Nabla'soups ... exact ... c'était évident pour moi. Tu fais bien de le préciser.
Merci Nabla's d'avoir rectifié.
;o) -
Contributeur@Polux31oui, 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 ...
-