C++ : problème avec l'option switch

Résolu/Fermé
overpowed Messages postés 116 Date d'inscription samedi 26 avril 2008 Statut Membre Dernière intervention 19 octobre 2013 - Modifié par BmV le 10/01/2011 à 19:10
overpowed Messages postés 116 Date d'inscription samedi 26 avril 2008 Statut Membre Dernière intervention 19 octobre 2013 - 10 janv. 2011 à 22:40
Bonjour,
je débute en cours de C++ et j'ai des souci avec l'option switch qui ne renvoie aucune donnée après avoir mis le numéro.
Voici le code:
-------------------------------------------------------------------------------------------------------------------
#include <iostream>
#include <string>
#include <math.h>
using namespace std;// en tête obligatoire

int main()
{
int nb;
int choix;
int far;

cout<<"MENU"<<endl<<"Saisir votre choix :"<<endl<<"1) Convertion \370C \315\315> \370F"<<endl<<"2) Convertion \370F \315\315> \370C"<<endl<<"3) Terminer"<<endl;
cout<<"Votre choix : 1,2,3"<<endl;
cin>>choix;

switch (choix){ // Voici le switch en question et les numéro de choix.

case '1':

cout<<"Veuillez saisir la temp\202rature que vous voulez convertir."<<endl<<"celle-ci exprim\202e sera convertie en Farenheit :";
double far;
cin>>far;

cout<<"La temp\202rature est de :"<<(9.0*(far)/5)+32<<" \370F"<<endl;
break;

case '2':

cout<<"Veuillez saisir la temp\202rature que vous voulez converture."<<endl<<"celle-ci exprim\202e sera convertie en Celsius :";

cin>>far;

cout<<"La temp\202rature est de :"<<(5.0/9.0)*(far-32.)<<" \370C"<<endl;
break;



case '3' :

return 0;

default :
cout<<"error"<<endl;
break;
}
nb=cin.get();
nb=cin.get();
}
-------------------------------------------------------------------------------------------------------------------

Pourquoi la sélection ne se réalise pas?
Merci d'avance de votre réponse.

A voir également:

4 réponses

KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 3 005
10 janv. 2011 à 20:49
Tu as déclaré 2 fois la variable far, ce qui n'est pas correct, de plus il faut la déclarer en dehors du switch si tu veux l'utiliser dans plusieurs case.
Enlèves donc ton double far;

Sinon pour ton problème de switch, tu as un int choix dans le switch, mais tu utilises des cases avec des char '1', '2', '3'... qui valent respectivement
Enlèves les apostrophes '' autour de tes valeurs.

Remarque (juste pour information) :
Tu peux aller à la ligne au milieu d'un cout. Je te conseille donc d'y aller au moins après un endl plutôt que de faire une ligne à rallonge.
using namespace std; n'est pas obligatoire, c'est très pratique oui, mais tu peux t'en passer en utilisant std:: devant tous les éléments de la la librairie std, comme std::cin, std::cout et std::endl par exemple.
0
overpowed Messages postés 116 Date d'inscription samedi 26 avril 2008 Statut Membre Dernière intervention 19 octobre 2013 2
10 janv. 2011 à 21:17
Merci pour ta réponse. Maintenant, ça sélectionne les items du menu mais le retour au menu via la fonction "break" ne se fait pas or c'est ce qui est demandé dans la consigne pour les cours.
Pourquoi?
Merci d'avance pour cette dernière question.
0
KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 3 005
10 janv. 2011 à 21:26
Le break ne sert pas à revenir au début, bien au contraire.
Pour boucler il te faut rajouter... une boucle !

while(1)
{
   cout << ... << endl; // menu
   switch(...) // opérations
   {
   }
}
0
overpowed Messages postés 116 Date d'inscription samedi 26 avril 2008 Statut Membre Dernière intervention 19 octobre 2013 2
10 janv. 2011 à 22:40
merci, ca fonctionne parfaitement.
0