Peut on utiliser un cin>> dans un switch?

helnod Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   -  
mamiemando Messages postés 33772 Date d'inscription   Statut Modérateur Dernière intervention   -
bonjour a vous mes ami(e)s . s il vous plait j aimerais savoir s il est possible d imbriquer un cin>> apres les 2points qui termine la valeur qui vient apres un case du switch . je donne un exemple pour rendre ma question clair :
exemple :
#include <iostream>
#include <string>
using  namespace std;

int main()
{
cout<< "slt je  suis helnod, peut  t faire :\n";
cout<< "Entrez une lettre\n";

char lettre
 
switch (lettre)
{
 
case A :
cout << "ton choix est A, entre ton nom";
string jaime("o");
cin >> jaime;//* voici le premier cin//
cout << "ton nom est : "<<jaime;
[/download/telecharger-34060311-break break];

case B :
cout << "ton choix est B, entre maintenant ton prenom";
 string aya("e");
cin >> aya;//* le second cin .sont ils possibles//
cout << "ton prenom est :"<<aya;
break;

default :
cout << "je veux juste connaitre ton  nom alors stp sois sympa";

}


return 0;
}

fin exemple.
comme fait sur ds l exemple , est ce que cela est possible ?

EDIT: Ajout de la coloration syntaxique.
A voir également:

1 réponse

mamiemando Messages postés 33772 Date d'inscription   Statut Modérateur Dernière intervention   7 882
 
Oui c'est possible mais il faut au préalable corriger quelques fautes :

1) il manque un point virgule après la déclaration de lettre

2) un switch case peut se faire sur un entier, un caractère. Donc là tout va bien. Mais par contre dans tes case, tu dois parler du caractère A, noté 'A' en C/C++ et ainsi de suite.

3) tu ne peux pas déclarer une variable immédiatement après un case, car sinon selon le case, les déclarations peuvent être conflictuelle. La solution consiste à limiter la portée (appelé scope) de ta variable à l'aide d'accolades (voir ci dessous). À noter que initialiser les chaînes aya ne sert à rien dans ce programme. Tu pourrais directement écrire :

std::string aya;


4) Ce n'est pas une faute, mais normalement on utilise endl au lieu de '\n' en C++. Notamment parce que le retour à la ligne ne met pas forcément en jeu les mêmes caractères selon le système (\r\n sous windows, \n sous linux).

5) Normalement les commentaires s'écrivent plutôt :

6) Garde à l'esprit que les
using namespace std
ne doivent êtres utiliser que dans des fichiers sources (cpp), jamais dans des headers (h). Ici c'est donc correct, mais personnellement je préfère ne jamais en utiliser (et écrire std::string, std::endl, etc). Question de goût :-)

/** Mon commentaire */
// Mon commentaire


#include <iostream>
#include <string>

using namespace std;

int main()
{
cout<< "Entrez une lettre" << endl;

char lettre;
cin >> lettre;

switch (lettre)
{
case 'A' :
{
cout << "ton choix est A, entre ton nom" << endl;
string jaime;
cin >> jaime; //* voici le premier cin//
cout << "ton nom est : " << jaime << endl;
}
break;

case 'B' :
{
cout << "ton choix est B, entre maintenant ton prenom" << endl;
string aya;
cin >> aya; //* le second cin .sont ils possibles//
cout << "ton prenom est :" << aya << endl;
}
break;

default :
cout << "je veux juste connaitre ton nom alors stp sois sympa" << endl;
}

return 0;
}


Bonne chance
0