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 :

cin : validation sur une variable


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 55
    Points : 33
    Points
    33
    Par défaut cin : validation sur une variable
    Bonjour à tous,

    je fais un petit programme (de débutant) à la console. A un moment donné, je souhaite récupérer une valeur dans un entier, allant de 1 à 8 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    int line = 0;
    cout << "Choisir une ligne (1-8) : ";
    cin >> line;
    J'aimerais tester ce que l'utilisateur tape, et ne pas passer à la suite tant que ma variable line n'est pas entre 1 et 8 ! Faire une sorte de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    while( (cin>>line) > 8)
    {
        cout << "Choisir une ligne (1-8) : ";
    }
    Si vous avez une idée je vous en remercie

    Bonne journée !!

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 29
    Points : 32
    Points
    32
    Par défaut
    Bonjour,

    Ton idée n'est pas mauvaise, mais tu devrai faire attention.

    Ta boucle while demandera d'abord la saisi de la par de l'utilisateur avant d'afficher le message l'y invitant.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 55
    Points : 33
    Points
    33
    Par défaut
    D'accord mebibyte. Grâce à tes remarques je viens de trouver la solution (qui n'était pas franchement compliquée ):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    int line;
     
    while(line > 8)
    {
        cout << "Choisir une ligne (1-8) : ";
        cin >> line;
    }
    Merci

  4. #4
    Membre éprouvé Avatar de Steph_ng8
    Homme Profil pro
    Doctorant en Informatique
    Inscrit en
    Septembre 2010
    Messages
    677
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant en Informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 677
    Points : 997
    Points
    997
    Par défaut
    Bonjour,
    En effet, ce n'était pas compliqué…
    Ceci dit, ton code n'est pas complet.

    Pour commencer, ce n'est pas une bonne idée d'utiliser des variables non initialisées.
    Ce n'est pas parce qu'il semble que la plupart du temps elles sont initialisées avec la valeur « nulle » par défaut qu'il faut considérer que c'est le comportement général.
    Deux solutions pour rémédier à ce problème : soit tu initialises explicitement ta variable, soit tu utilises une boucle « do … while ».

    Et sinon, tu es sûr que seules des valeurs valides sont acceptées par ce bout de code ?

  5. #5
    Membre confirmé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 096
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 096
    Points : 633
    Points
    633
    Par défaut
    ou bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    do{
        cout << "Choisir une ligne (1-8) : ";
    }while( (cin>>line) > 8)

  6. #6
    Membre éprouvé Avatar de Steph_ng8
    Homme Profil pro
    Doctorant en Informatique
    Inscrit en
    Septembre 2010
    Messages
    677
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant en Informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 677
    Points : 997
    Points
    997
    Par défaut
    Non, ça ne fonctionnera pas.
    Déjà, il manque un point-virgule après la condition du « while ».
    Ensuite, le type de retour des opérateurs « << » et « >> » avec un flux est le flux utilisé.
    Je ne suis pas sûr que l'on puisse comparer un flux et un entier…

    Au mieux, on aura « 0 » si le flux est invalide et « 1 » s'il est valide…

  7. #7
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 55
    Points : 33
    Points
    33
    Par défaut
    Merci pour toutes vos réponses C'est cool d'apprendre !!

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

Discussions similaires

  1. [XSLT] Faire une boucle sur une variable [i]
    Par PoT_de_NuTeLLa dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 07/06/2010, 12h45
  2. [2.0] Get sur une variable d'application qui bug ??
    Par brousaille dans le forum ASP.NET
    Réponses: 8
    Dernier message: 14/03/2006, 05h08
  3. [Tableaux] action sur une variable ->
    Par mactech dans le forum Langage
    Réponses: 9
    Dernier message: 15/12/2005, 18h01
  4. Opération sur une variable
    Par pcdj dans le forum Linux
    Réponses: 2
    Dernier message: 29/10/2005, 20h02
  5. Ajouter un listener sur une variable
    Par serwol dans le forum Général Java
    Réponses: 4
    Dernier message: 14/10/2005, 15h39

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