Menu

Switch en C++ [Fermé]

Lord_Vking 43 Messages postés mardi 5 octobre 2004Date d'inscription 2 février 2005 Dernière intervention - 19 nov. 2004 à 09:34 - Dernière réponse :  bizuquicommencelaprogrammation-etquiveutcreerunjeuvidéo
- 30 avril 2014 à 21:33
Bonjours, j'me suis fait un switch en c++

int bob;
cin << bob;

switch (bob)
{
case 1:
{
cout << "1";
}
case 2:
{
cout <<"2";
}
case 3:
{
cout << "3";
}
}
 



résultat... quand bob =1 , il me cout << 123
si bob =2 il me cout << 23
si bob =3 il me cout <<3
vous comprenez ? il prend la case ou je lui dit de partir, mais il fait aussi les case suivante.. c normal ? on peut empecher ca ?!?! svp

EDIT: Ajout de la coloration syntaxique.
Afficher la suite 

15 réponses

Meilleure réponse
maily 7560 Messages postés lundi 26 juin 2000Date d'inscriptionContributeurStatut 3 octobre 2015 Dernière intervention - 19 nov. 2004 à 09:38
35
Merci
Bonjour!!

Oui, c'est tout à fait normal!!
Il faut que lorsqu'il rentre dans un cas, tu écrives l'instruction "break" qui permet de sortir de la boucle!

int bob;
cin << bob;

switch (bob)
{
     case 1: {
          cout << "1";
          break;
    }
    case 2:
   {
          cout <<"2";
          break;
    }
    case 3:
   {
          cout << "3";
// ici, ce n'est pas nécessaire, c'est la dernière instruction
    }
}


Bonne journée!
Maily :-))))
Boumj'chtattrape

Merci maily 35

Avec quelques mots c'est encore mieux Ajouter un commentaire

CCM a aidé 22341 internautes ce mois-ci

les "<<" sont supposés être des ">>" pour les cin
bizuquicommencelaprogrammation-etquiveutcreerunjeuvidéo - 30 avril 2014 à 21:33
c'est vrai... c'est vrai...
14
Merci
Salut, en plus de l'instruction break (cf maily), il faut que tu rajoutes le cas par défaut.
Imagines toi, je fais une erreur de saisie, et bob==4.
Que renvoie ton prgm ??

donc fait (à la suite de la réponse de Maily)

default :
cout<<"erreur de saisie \n";

L'instruction default se met a la FIN du switch

Pom
3
Merci
bonjour
je ne sais pas si je vais vraiment vous aider, tout ce que je sais est qu'après un case ontermine par un break;
dans votre cas vous avez mit
switch(bob)
{
case 1:
{cout<<"1"
}
break;
case 2:
{cout<<"2"
}break;
case 3:
{ cout<<"3"
}break;
2
Merci
oui,
ajouter break;
apres l instruction.
exemple
switch(bob)
{
case 1:
{cout<<"1";
break;
}
}
kali zahir - 19 oct. 2010 à 15:00
2
Merci
bonjour
je sais qu'il vous manque un point virgule et un break aprés chaque case(case: .....;break;).
maily 7560 Messages postés lundi 26 juin 2000Date d'inscriptionContributeurStatut 3 octobre 2015 Dernière intervention - 19 nov. 2004 à 12:09
1
Merci
ah oui!! c'est vrai!!

enfin, pour plus de renseignements sur la fonction switch, regarde là:
http://www.commentcamarche.net/c/ccond.php3

;-)

Maily :-))))
Boumj'chtattrape
1
Merci
Bonjour,
Je ne pense pas qu'il faille mettre de crochets ({}) "dans" les case... en effet le break; cassera le bloc, et je ne suis pas sur que ça cassera le switch. Du moins je pense...

Banane
Char Snipeur 9703 Messages postés vendredi 23 avril 2004Date d'inscriptionContributeurStatut 3 juillet 2018 Dernière intervention - 8 juin 2011 à 08:46
une chose est sur et je confirme, pas besoin d'accolade ({}) dans le case.
0
Merci
je tiens a rappeler qu'apres cin on ecrit
">>" et pas "<<"
besten 93 Messages postés mercredi 19 octobre 2011Date d'inscription 15 avril 2018 Dernière intervention - 19 oct. 2011 à 19:59
0
Merci
J'ai un petit soucis, je voudrais affecter dans mon "case" plusieurs variables.

Par exemple, pour un programme qui affiche la date de la veille et du lendemain, on crée le programme avec un switch.
switch (mois){
case 1 : {instructions}
break;
case 2 : {instructions}
break;
case 3 : {instructions}
break;
case 8 : {instructions}
break;
case 12 : {instructions}
break;

Ensuite, puisque les mois 4, 6, 9, 11 (avril, juin, septembre et novembre) ont la même partie :
if (jour==1){
cout << "La date d'hier etait le 01/"<<mois-1<<"/"<<annee << endl;
cout << "La date de main sera le "<<jour+1<<"/"<<mois<<"/"<<annee << endl;
}else{
if (jour==30){
cout << "La date d'hier etait le "<<jour-1<<"/"<<mois<<"/"<<annee << endl;
cout << "La date de main sera le 01/"<<mois+1<<"/"<<annee << endl;
}else{
cout << "La date d'hier etait le "<<jour-1<<"/"<<mois<<"/"<<annee << endl;
cout << "La date de main sera le "<<jour+1<<"/"<<mois<<"/"<<annee << endl;
}

Même chose pour les mois 5, 7, 10 (mai, juillet, octobre) sauf qu'on remplace la valeur 30 par la valeur 31.
Il y a 4 valeurs pour la variable "mois" qui ont le même programme. Est-il possible de les regrouper dans un seul "case" ou il faut les faire un par un ?

Merci de me comprendre.
Char Snipeur 9703 Messages postés vendredi 23 avril 2004Date d'inscriptionContributeurStatut 3 juillet 2018 Dernière intervention - 20 oct. 2011 à 08:25
bonjour,
switch(mois)
{
case 1:
case 3:
case 5:
case 7:
...
//code
break;
....
}
besten 93 Messages postés mercredi 19 octobre 2011Date d'inscription 15 avril 2018 Dernière intervention - 20 oct. 2011 à 11:17
on ne peut pas faire un truc du genre case 4:6:9:11: {instructions}
ou case (4:6:9:11) : {instructions} ???
Char Snipeur 9703 Messages postés vendredi 23 avril 2004Date d'inscriptionContributeurStatut 3 juillet 2018 Dernière intervention - 20 oct. 2011 à 11:55
pas à ma connaissance.