Problème de SWITCH

EMSIEN Messages postés 194 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 11 juin 2009 - 11 oct. 2004 à 22:29
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 - 12 oct. 2004 à 17:18
Bonjour Voilà J’ai rencontré un problème Lors de l’utilisation d’une instruction switch,
D’abord je veux réaliser une fonction permettant de retourner le maximum d’un mois entré au clavier, le problème est que Dans les 2 premiers Case Quand je saisie Par exemple comme Mois (1,3,5,7,8,10 Dans le 1er Case)(4,6,9 Dans le 2ème Case) il me retourne une valeur fausse par contre quand je saisie (12 ou bien 11) Il me retourne une valeur Juste : Déduction :
Je crois que le case n’est valable que pour une seule valeur.
Ma question est : Est-ce que y a pas un moyen pour remedier à ce problème sans Faire Ceci :
Case 1: max=31;break;
Case 3: max=31;break;
Case 5: max=31;break;
Case 7: max=31;break;
Case 8: max=31;break;
…….. Ainsi de suite.
J’espère que j’étais assez Clair Merci pour Vos réponses.

Ma fonction :
positif duree_mois(positif m,positif a)
{
positif max=0;
booleen bissextilite =biss(a);
//Décalaration & initialisation d'une booleenne ayant pour
// résultat de biss(a)

switch(m){
case 1,3,5,7,8,10,12: max=31;break;
case 4,6,9,11: max= 30;break;
case 2:if( bissextilite == vrai){ max=29; break;}
else max=28; break;
default:;break;
};
return max;
}

6 réponses

Hades53 Messages postés 231 Date d'inscription mercredi 12 février 2003 Statut Membre Dernière intervention 7 juillet 2009
11 oct. 2004 à 23:05
case "blah", case 89 mais pas case 1,2,45,6,8.

Utilise du if avec du > < <= >=.
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
11 oct. 2004 à 23:12
pour ce cas précis (nombre de jours dans un mois) un tableau sera plus simple.
0
EMSIEN Messages postés 194 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 11 juin 2009
11 oct. 2004 à 23:17
Pour hades j'ai pas Compris ce que t'as voulu dire et Pour Ymca2003 merci pour l'info mais je cherche cette reponse pr ce prob et pour autre chose donc si t'as du new n'haésite surtt pas.
merci comme meme.
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
11 oct. 2004 à 23:38
ce qu'à voulu dire hades53 c'est que chaque "case" ne peut être associé qu'à une seule valeure entière, donc case 1, 2,3 n'est pas possible. en revanche, si tu omet le break dans un "case", il plonge dans le suivant donc tu peux faire ;

switch(m)
{
case 1: //no break
case 3: //no break
case 5: //no break
case 7: //no break
case 8: //no break
case 10: //no break
case 12: max=31;break;

case 4: //no break
case 6: //no break
case 9: //no break
case 11: max= 30;break;

case 2:if( bissextilite == vrai){ max=29; break;}
else max=28; break;
default:;break;
}

en général dans ces cas là on met en commentaire que le break a été omis intentionnellement.
0

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

Posez votre question
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
12 oct. 2004 à 07:48
Je ne vois pas trop l'intérêt de :

default:;break;

_______________________________________

DarK Sidious

[Responsable API/VB du site www.ProgOtoP.com]
Téléchargez ProgOtoP API Viewer
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
12 oct. 2004 à 17:18
Premier ; pour eviter une erreur de compilation
0
Rejoignez-nous