IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

Le switch en C++


Sujet :

C++

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur d'etat en Genie Industriel et Formateur Enligne en Excel
    Inscrit en
    Novembre 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur d'etat en Genie Industriel et Formateur Enligne en Excel
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2017
    Messages : 13
    Points : 15
    Points
    15
    Par défaut Le switch en C++
    Salut tt le monde,je veuc juste savoir est ce que ce programme est juste,il s'agit d'un programme qui calcule la somme ou bien la soustraction oi bien la multiplication ou bien la division,sans tenir compe de la division par 0
    Nom : Sans titre.png
Affichages : 2139
Taille : 87,9 Ko

  2. #2
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 446
    Points : 43 088
    Points
    43 088
    Par défaut
    Bonjour,

    Première chose, il faut mettre ton code dans une balise code (le # de l'éditeur), avec une image c'est illisible.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  3. #3
    Expert éminent
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 565
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 565
    Points : 7 648
    Points
    7 648
    Par défaut
    Bonjour,

    Ton code est plutôt bien écrit. Il ne devrait cependant pas fonctionner, car ligne 14 on ne peut pas lire simplement un caractère après avoir lu des nombres.
    Il faudrait juste avant "vider le buffer d'entrée de cin" en faisant std::cin.ignore(std::numeric_limits<std::streamsize>::max()); et mettre au début du code #include <limits>, pour pouvoir accéder à numéric_limits.

  4. #4
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2011
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 739
    Points : 3 627
    Points
    3 627
    Par défaut
    Citation Envoyé par dalfab Voir le message
    Il ne devrait cependant pas fonctionner, car ligne 14 on ne peut pas lire simplement un caractère après avoir lu des nombres..
    Heureusement que si. Les flux s'arrêtent au premier caractère invalide du type demandé. Dans l'expression "42+13" avec std::cin >> x >> c >> y;, "+" est le caractère d'arrêt pour la lecture de x. Il sera lut pour c et le reste ("13") placé dans y.

    Il y a aussi un filtre des espaces blancs avant lecture, ce qui permet d'avoir le même résultat avec " 42 + 13" ou "42\n +\n 13".

  5. #5
    Membre à l'essai
    Homme Profil pro
    Ingénieur d'etat en Genie Industriel et Formateur Enligne en Excel
    Inscrit en
    Novembre 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur d'etat en Genie Industriel et Formateur Enligne en Excel
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2017
    Messages : 13
    Points : 15
    Points
    15
    Par défaut reponse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    # include <iostream >
     using namespace std ;
    double calcule ( double , double , char);
    int main() {
      double a,b;
      cout << "Entrer deux nombre : " ;
      cin  >> a >> b ;
      char c ;
      cout << " Choisir l'operation que vous voulez effectuer : "  << endl
           << " + pour l'addition."<< endl
           << " - pour la soustraction."<< endl
           << " * pour la multiplication."<< endl
           << " / pour la division."<< endl;
      cin >> c ;
    if (( c != '+' ) and ( c != '*' ) and ( c != '-' ) and ( c != '/' ))
         c = '+';
        cout << a << c << b << " = " << calcule(a,b,c) << endl;
      return 0; 
    }
    double calcule( double x,double y,char z){
      switch (z) {
        case '+': return x+y;
        case '-': return x-y;
        case '*': return x*y;
        case '/': return x/y;
        default : return x+y;
        }
     }
    Voila mon code bien lisible,en fait jai compile ce code a l'aide de g++ dans cmd,et il est bien execute sana erreur,ce que je demande est ce que le return que jai utiliser pour chaque cas du switch est valide,autrement dis est ce que cest pas la peine de declarer une variable resultat par exemple est affecter a chaque cas du switch la valeur qui va etre reteurner a la fin du switch
    Merci pour l'aide.

  6. #6
    Expert éminent
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 565
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 565
    Points : 7 648
    Points
    7 648
    Par défaut
    Le code de la fonction est tout à fait valide. On préfère normalement éviter d'avoir plusieurs return dans une même fonction, mais ici la fonction est particulièrement claire.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Ingénieur d'etat en Genie Industriel et Formateur Enligne en Excel
    Inscrit en
    Novembre 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur d'etat en Genie Industriel et Formateur Enligne en Excel
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2017
    Messages : 13
    Points : 15
    Points
    15
    Par défaut
    ok,Merci enormement pour votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Aide sur un switch 3com
    Par Gladiator dans le forum Développement
    Réponses: 5
    Dernier message: 06/02/2004, 17h49
  2. Réseaux : switch, routeur et wi-fi
    Par SteelBox dans le forum Hardware
    Réponses: 4
    Dernier message: 07/12/2003, 20h25
  3. Switch 1000Mbit
    Par Civodul4 dans le forum Hardware
    Réponses: 8
    Dernier message: 02/12/2003, 13h16
  4. switch
    Par drKzs dans le forum C
    Réponses: 3
    Dernier message: 07/10/2003, 07h59
  5. Réponses: 6
    Dernier message: 26/01/2003, 13h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo