Language c

Fermé
yassine - 19 oct. 2015 à 00:57
jackdada Messages postés 77 Date d'inscription vendredi 31 juillet 2015 Statut Membre Dernière intervention 10 février 2016 - 19 oct. 2015 à 05:25
Bonjour,
j'ai pas trouvé l'erreur


#include <stdio.h>
#include <stdlib.h>
int main()
{
int annee;
int Mois;

printf("Saisir une annee :\n ");
scanf("%d",&annee);
printf("Saisir un Mois :\n ");
scanf("%d",&Mois);
switch (Mois) {

case 2:
if(annee % 4 == 0 && annee % 100 != 0 || annee % 400 == 0)
printf("29 jours");

else
printf("28 jours");
break;

case 1,3,5,7,8,10,12 :
printf("31 jours");

break;

case 4,6,9,11:
printf("30 jours");

break;

default:
printf("erreur");;
}
system("pause");
return 0;
}

1 réponse

jackdada Messages postés 77 Date d'inscription vendredi 31 juillet 2015 Statut Membre Dernière intervention 10 février 2016 19
19 oct. 2015 à 05:25
Bonjour,
Tu as 2 erreurs.
Tout d'abords, dans le case 2, à l'intérieur du if manque une paire de parenthèse englobant le &&
if((annee % 4 == 0 && annee % 100 != 0) || annee % 400 == 0) 

Ensuite il y a un problème sur la forme de ton switch. tu n'as pas le droit de mettre case 1,3,5,7,8,10,12: et case 4,6,9,11:
Pour effectuer la même opération à plusieurs cas, tu doit l'écrire sous la forme suivante:
case 1: case 2: case 3: //pour tout les cas se répétant
//mon code
break;

Tu as normalement du voir que, si tu ne met pas de break à la fin d'un cas, il passe automatiquement au cas qui se situe en dessous de lui. Donc ici c'est pareille, pour le cas 1, il continuera dans les cas suivant jusqu'à ce que un cas fasse appel à break pour stopper le switch.
A toi de modifier ton case maintenant pour qu'il reprenne cette forme la.
0