Difficulté en C++
Fermé
Ophelie
-
25 févr. 2010 à 16:17
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 2 mars 2016 à 10:31
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 2 mars 2016 à 10:31
5 réponses
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 297
25 févr. 2010 à 16:58
25 févr. 2010 à 16:58
non, aucun. sauf de ne pas utiliser switch
Bonjour,
Il y a une erreur dans ton switch, le for() qui refait le case k;
Alors voilà, déclare ta variable 't' hors du switch.
Puis, tu veux que lorsque 'reponse' vaut un nombre entre 1 et 999, je te conseille de le faire avec des if / else if.
Ce n'est peut-être pas la cause du problème, mais je psnes bien que ce soit cela.
Ainsi :
Je ne connais pas la fonction 'goto', ainsi je ne peut pas de dire qq chose là-dessus.
Voila, bye ;)
Il y a une erreur dans ton switch, le for() qui refait le case k;
Alors voilà, déclare ta variable 't' hors du switch.
Puis, tu veux que lorsque 'reponse' vaut un nombre entre 1 et 999, je te conseille de le faire avec des if / else if.
Ce n'est peut-être pas la cause du problème, mais je psnes bien que ce soit cela.
Ainsi :
int reponse; int const t [1000]; cin >> reponse; if(reponse==0){ goto menuprincipal; } else if(reponse>0&&reponse<1000){ cout << "Merci de votre aide." << endl; } else{ cout << "Erreur de saisie, tapez un des chiffres attendus." << endl; }
Je ne connais pas la fonction 'goto', ainsi je ne peut pas de dire qq chose là-dessus.
Voila, bye ;)
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 297
26 févr. 2010 à 08:08
26 févr. 2010 à 08:08
Le message d'erreur informe juste que les valeurs des case d'un switch doivent être des variables constantes, donc connues à la compilation.
Le goto est une instruction plus que déconseillé d'utiliser.
Le goto est une instruction plus que déconseillé d'utiliser.
Le problème avec le if eslif c'estque je devrais en faire 1000 car chacun de mes "cout" a une phrase différente derriere j'ai posté un probleme simplifié du probleme réel pour ne pas embrouiller les gens voici le probleme réel:
cin>>reponse2;
switch(reponse2)
{
case 0:{goto menuprincipal;}break;
for (int k=1; k<1000; k++)
{
case k:{tab[k]->affichersocle();}break;
}
default:cout<<" Erreur de saisie tapez un des chiffres attendus "<<endl;break;
}
remarque tab est un tableau de pointeur vers des objets d'une classe possédant en l'occurence la méthode affichersocle;
cin>>reponse2;
switch(reponse2)
{
case 0:{goto menuprincipal;}break;
for (int k=1; k<1000; k++)
{
case k:{tab[k]->affichersocle();}break;
}
default:cout<<" Erreur de saisie tapez un des chiffres attendus "<<endl;break;
}
remarque tab est un tableau de pointeur vers des objets d'une classe possédant en l'occurence la méthode affichersocle;
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 297
26 févr. 2010 à 10:47
26 févr. 2010 à 10:47
ba c'est pas plus compliqué :
Dans ce que tu as écris, je doute qu'une boucle for avec un case soit juste. Et le break porterai sur le for et non sur le switch.
int reponse; int const t [1000]; cin >> reponse; if(reponse==0){ goto menuprincipal;//beurk ! } else if(reponse>0&&reponse<1000){ tab[reponse]->affichersocle(); } else{ cout << "Erreur de saisie, tapez un des chiffres attendus." << endl; }Le problème était ton algo plus qu'autre chose.
Dans ce que tu as écris, je doute qu'une boucle for avec un case soit juste. Et le break porterai sur le for et non sur le switch.
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 297
2 mars 2016 à 10:31
2 mars 2016 à 10:31
parceque c'est pas pareil et ne donne pas la même chose.