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

Langage C++ Discussion :

Comparaison string et contrainte avec do while


Sujet :

Langage C++

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Comparaison string et contrainte avec do while
    Bonjour,

    J'ai fait un TP de programmation dans le cadre de mes etudes et j'aimerais améliorer cette fonction:.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    void disciplinechoix(string *disc,string *noms, int n)
    {
        string discchoisie;
        cout<<"Choisir la discipline : "<<endl;
        cin>>discchoisie;
        cout<<endl<<"Laureat pratiquant la discipline choisie sont: "<<endl;
        for(int i=0;i<n;i++)
        {
            if(discchoisie==disc[i])
            {
                cout<<noms[i]<<endl;
            }
        }
    }
    En fait j'aimerais contraindre l'utilisateur à retaper la discipline si elle est différente de "Physique" ou de "Chimie". J'ai essayé avec un do while mais la boucle me redemande la discipline a l'infini.
    Voici le code modifié:
    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
    void disciplinechoix(string *disc,string *noms, int n)
    {
        string discchoisie;
        do
        {
            cout<<"Choisir la discipline : "<<endl;
            cin>>discchoisie;
        }
        while(discchoisie!="Physique"||discchoisie!="Chimie");
        cout<<endl<<"Laureat pratiquant la discipline choisie sont: "<<endl;
        for(int i=0;i<n;i++)
        {
            if(discchoisie==disc[i])
            {
                cout<<noms[i]<<endl;
            }
        }
    }
    Sachant qu'on vient à peine de voir le chapitre sur les strings j'ai du louper un truc mais j'ai beau me creuser la tête je ne vois pas...
    Merci d'avance pour vos conseils!

  2. #2
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Comme c'est du C++, commence déjà par utiliser des références sur des string, plutot que des pointeurs.

    ton problème, c'est que tu as un mis un ou logique (||) au lieu d'un et logique (&&).
    discchoisie est forcément différente de "Physique" ou différente de "Chimie".
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    J'ai utilisé des pointeurs car c'est l'énoncé du TP qui le demande.

    Quand je remplace || par &&, j'ai le message d'erreur suivant:

    error: no match for 'operator &&'

  4. #4
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    lis ton message d'erreur complet, il te dit le types des arguments, et t'énonce les différentes opérateurs && qu'il peut envisager, et pourquoi chacun ne va pas.
    Au besoin, ajoute des parenthèses.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  5. #5
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Concernant les pointeurs, je n'avais pas regardé correctement.
    Le réflexe en C++ correct est de ne pas avoir de pointeurs.

    En l'occurence, tes pointeurs (et le int qui les accompagne) sont des adresses de tableaux.
    La solution "C++-esque" de ce C-isme serait d'avoir deux références sur des vecteurs.

    La bonne solution serait d'avoir une référence sur un vecteur de Laureat, qui serait une structure ayant un nom et une discipline.
    J'espère que ton professeur/cours t'en parleras très rapidement.


    note: La solution idéale serait d'en faire une template, pour laisser à l'appeleur le choix du type de conteneur.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  6. #6
    Expert éminent
    Avatar de Pyramidev
    Homme Profil pro
    Développeur
    Inscrit en
    Avril 2016
    Messages
    1 469
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Avril 2016
    Messages : 1 469
    Points : 6 102
    Points
    6 102
    Par défaut
    Citation Envoyé par NiouNiou Voir le message
    Quand je remplace || par &&, j'ai le message d'erreur suivant:

    error: no match for 'operator &&'
    Chez moi, ça compile.
    Es-tu sûr de ne pas avoir fait autre chose que de remplacer || par && ?

Discussions similaires

  1. [MySQL] Comparaison avec boucle while
    Par Sltcmi dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 12/01/2016, 14h35
  2. Comparaison String avec une valeur d'un JSONObject
    Par DiR95 dans le forum Développement Web en Java
    Réponses: 0
    Dernier message: 06/01/2016, 01h09
  3. Réponses: 4
    Dernier message: 15/05/2008, 17h38
  4. Réponses: 3
    Dernier message: 03/03/2008, 10h30
  5. Problème avec Do while rs.EOF
    Par lauraned dans le forum ASP
    Réponses: 12
    Dernier message: 21/05/2004, 12h00

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