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 :

comment stopper la saisie dans une boucle while


Sujet :

C++

  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    55
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 55
    Par d�faut comment stopper la saisie dans une boucle while
    Bonjour et merci pour votre aide

    Dnas le code suivant comment interrompre la saisie dans la boucle while?

    Le but est de saisir un nombre de paires du style aa bb dd ee aa .

    Celle-ci sont r�ceptionn�es dans un string.
    Si je veux arr�ter la saisie par la touche entr�e est-ce possible?

    Sinon, comment faire?

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    #include <cstdlib>
    #include <iostream>
    #include <vector>
     
    using namespace std;
     
    struct Pair { string pairs; double num;};
    vector<Pair> p1;  
    vector<Pair> p7;
     
    double& f(const string &s)
    {
       for (int j = 0 ; j < p1.size(); j++)
          if (s==p1[j].pairs) 
           return p1[j].num;  
     
          Pair p2;
          p2.pairs = s;
          p2.num = 0;
          p1.push_back(p2);
          return p1[p1.size()-1].num;
    } 
     
    } 
    int main()
    {
        string s;
     
        cout << "Veuillez saisir un ensemble de paires de lettres\n";
        while (getline(cin,s,'\n')) f(s)++;
        cout << "Voici le nombre de paires différentes saisies\n";
        for ( vector <Pair>::const_iterator p = p1.begin(); p != p1.end();
                                p++)
               cout << p->pairs << ":" << p->num << '\n';                    
     
        system("PAUSE");
        return 0;
    }

  2. #2
    Expert confirm�
    Avatar de Luc Hermitte
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2003
    Messages
    5 296
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Ao�t 2003
    Messages : 5 296
    Par d�faut
    Plusieurs fa�ons de faire:
    - ^D (sous *nix) ou ^Z (sous dos et descendants) ferme d�finitivement le flux entrant => plus aucune interaction possible avec l'utilisateur
    - tu reconnais une valeur particuli�re qui sert � signifier que tu as fini de saisir
    - tu sais (d'une fa�on ou d'une autre) combien d'�l�ments tu vas saisir.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne r�ponds � aucune question technique par le biais de ce m�dia. Et de toutes fa�ons, ma BAL sur dvpz est pleine...

  3. #3
    Membre confirm�
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    55
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 55
    Par d�faut
    Bon alors ^Z, �a marche nickel.
    Par contre quand je veux encha�ner deux saisies j'ai un l�ger pb
    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
    int main()
    {
        string s;
        string t;
     
        cout << "Veuillez saisir un ensemble de paires de lettres\n";
        while (cin >> s) f(s)++;
        cout << "Voici le nombre de paires différentes saisies\n";
        for ( vector <Pair>::const_iterator p = p1.begin(); p != p1.end();
                                p++)
               cout << p->pairs << ":" << p->num << '\n';                    
     
        cout << "Veuillez saisir un string\n";
        cin >> t;
        h(t);
    Si je travaille avec le m�m string s, il garde en m�moire la saisie pr�c�dente.
    Si je travaille avec deux string s et t ( ci-dessus) il be me laisse pas la possibilit� de saisir!!!

    ALors je fais comment moi?
    Merci...


    [Balises CODE rajout�es par Loulou24, merci d'y penser � l'avenir]

  4. #4
    Membre �clair�
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    65
    D�tails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2003
    Messages : 65
    Par d�faut
    Citation Envoy� par smag
    Bon alors ^Z, �a marche nickel.
    �a ne marche pas du tout si tu veux poursuivre la discussion avec l'usager. Demande plut�t de taper une ligne vide pour terminer la saisie par exemple. Si la ligne saisie est vide, alors tu sors de la boucle.

  5. #5
    Membre confirm�
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    55
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 55
    Par d�faut
    ok j'ai fini par tester sur le mot Quit
    Merci
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    while (cin >> s) 
        {if (s == "Quit")
        break;
               f(s)++;}

    [Balises CODE rajout�es par Loulou24, merci d'y penser � l'avenir]

  6. #6
    R�dacteur
    Avatar de Laurent Gomila
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par d�faut


    Merci de penser aux balises CODE � l'avenir.

  7. #7
    R�dacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 45
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par d�faut
    Citation Envoy� par smag
    ok j'ai fini par tester sur le mot Quit
    Merci
    while (cin >> s)
    {if (s == "Quit")
    break;
    f(s)++;}
    tu as essay� �a ?

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    while ( (cin >> s) && (s!="Quit") )
       f(s)++;
    ou pour ne pas avoir � se soucier de la casse :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include <algorithm>
     
    while (cin >> s)
    {
       std::string tmp;
       std::transform(s.begin(),s.end(),tmp.begin(),tolower);
       if (tmp == "quit")
          break;
       f(s)++;
    }

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Sortir de la saisie dans une boucle while
    Par africanwinners dans le forum C
    R�ponses: 4
    Dernier message: 08/08/2011, 17h41
  2. [Tkinter] M�thode get() dans une boucle while
    Par Thundie dans le forum Tkinter
    R�ponses: 2
    Dernier message: 04/02/2006, 00h06
  3. Probl�me de SCANF dans une boucle WHILE
    Par FidoDido� dans le forum C
    R�ponses: 4
    Dernier message: 30/12/2005, 17h42
  4. [Conception] Probl�me de test dans une boucle while
    Par Cyrius dans le forum PHP & Base de donn�es
    R�ponses: 2
    Dernier message: 26/11/2005, 18h07
  5. [MFC] Dialog dans une boucle while
    Par oxor3 dans le forum MFC
    R�ponses: 5
    Dernier message: 23/04/2004, 22h51

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