Problème Switch

Résolu/Fermé
Lucky Lucke - 9 mars 2009 à 21:50
 Lucky Lucke - 9 mars 2009 à 22:09
Bonjour,
Je débute en programmation et la j'ai concocté un programme qui demande l'age et qui dit une phrase en fonction de l'âge.Mais voilà, je crois que j'ai fais une erreur : je veux mettre plusieurs "âges" pour la même case. J'ai pensé bien faire en mettant des || entre chaque "âge" mais ça me met deux erreurs : error: duplicate case value et error: previously used here.

Donc voilà mon programme(dsl j'ai pas mis de commentaires) :


#include <stdio.h>
#include <stdlib.h>

int main()
{
long age = 0;
Printf("Quel age as-tu? ");
scanf("%ld\n", age);

switch (age)
{
case 1 || 2 || 3 || 4 || 5:
printf("Ouiin, ouiinn!");
break;
case 6 || 7 || 8 || 9 || 10:
printf("Petit morveux!");
break;
case 11 || 12 || 13 || 14 || 15:
printf("Tu n'es qu'un ado!");
break;
case 16 || 17 || 18 || 19 || 20 || 21 || 22 || 23 || 24:
printf("Tu es encore jeune!");
break;
case 25 || 26 || 27 || 29 || 28 || 30 || 31 || 32 || 33:
printf("Tu es un grand homme maintenant!");
break;
case 34 || 35 || 36 || 37 || 38 || 39 || 40 || 41 || 42 || 43 || 44 || 45 || 46 || 47 || 48 || 49:
printf("Tu n'es plus dans la fleur de l'age!");
break;
case 50 || 51 || 52 || 53 || 54 || 55 || 56 || 57 || 58 || 60 || 61 || 62 || 63 || 64 || 65 || 66 || 67 || 68 || 69 || 70:
printf("Tu es un senior!");
break;
case 59:
printf("Coucou papa!");
break;
default:
printf("Tu es un vieux papy ma parole!");
break;
}


return 0;
}
A voir également:

4 réponses

Up =)
0
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
9 mars 2009 à 22:06
ça marche pas comme ça si tuveux plusieur case pour une seul instruction c'est plutot comme ça
case 1:
case 2:
case 3:
case 4:
case 5: printf("Ouiin, ouiinn!");
break;
0
Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 329
9 mars 2009 à 22:07
Bonsoir,
Dans le cas où c'est des conditions qui se suivent (comme ici), tu peux volontairement oublier le break. Si ce n'est pas le cas, il te faudra alors créer une fonction à appeler dans chaque cas afin de factoriser le code un minimum.

#include <stdio.h>
#include <stdlib.h>

int main()
{
long age = 0;
Printf("Quel age as-tu? ");
scanf("%ld\n", age);

switch (age)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("Ouiin, ouiinn!");
break;
case 6:
case 7:
case 8:
case 9:
case 10:
printf("Petit morveux!");
break;
case 11:
case 12:
case 13:
case 14:
case 15:
case 16:
printf("Tu n'es qu'un ado!");
break;
case 16:
case 17:
case 18:
case 19:
case 20:
case 21:
case 22:
case 23:
case 24:
printf("Tu es encore jeune!");
break;

//à finir ;)

case 59:
printf("Coucou papa!");
break;
default:
printf("Tu es un vieux papy ma parole!");
break;
}
return 0;
}


Dans ce cas, il est tout de même préférable d'utiliser des conditions plutôt que d'énumérer la centaine de cas possibles...

Cordialement,
0
Merci à vous deux vous m'avez bien aidé =)
0