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 :

Un string dans un tableau de deux dimensions...


Sujet :

C++

  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    106
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 106
    Par d�faut Un string dans un tableau de deux dimensions...
    Bonjour,

    J'ai un Devoir � rendre en Algo et c'est en C++

    Alors voil� mon code :

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    #include <iostream>
    #include <string>
    #include <cctype>
     
    using namespace std;
     
    const int nbMaxMotsClefs=10;
    const int tailleMaxMotClef=40;
     
    typedef
      struct
      {
        bool Tous; // si vrai, indique qu'on recherche tous les mots-clefs
                   // si faux, indique qu'on recherche au moins l'un des mots-clefs
        int nbMotsClefs; // nombre de mots clefs dans le tableau liste
        char liste[nbMaxMotsClefs][tailleMaxMotClef];
      } RechercheComplexe;
     
    void lireRechercheComplexe(RechercheComplexe &rech) // R
    {
      string s;
      int i=0,j=0;
     
      cout << "Rechercher tous les mots-clefs ou un seul : ";
      do
      {
        cin >> s;
      } while (s != "un" && s != "tous");
      if (s == "un")
        rech.Tous = false;
      else
        rech.Tous = true;
      cout << "Vos mots-clefs terminés par un point : ";
      getline(cin,s);
      while (s[i] != '.' && i<s.length())
      {
        if (s[i] != 32)
        {
          rech.liste[j][i]=s[i];
          i++;
        }
        else
        {
          rech.liste[j][i]='\0';
          i++;
          j++;
        }
      }
      rech.nbMotsClefs=j;
    } 
     
    int main()
    {
      RechercheComplexe recherchecomplexe;
      lireRechercheComplexe(recherchecomplexe);
      cout << recherchecomplexe.nbMotsClefs;
    }
    Alors le but de cette proc�dure est de demander � l'utilisateur si il souhaite rechercher dans une chaine de caract�re un ou tous les mot-clefs qu'il tape par la suite. Les mot-clefs sont tap�s l'un apr�s l'autre avec un espace entre chaque et un point pour dire qu'il n'y a plus de mot-clefs.

    Le prob c'est que quand je lance le programme il marche bien mais quitte apr�s la saisit des mot-clefs... Je sais pas d'o� vient l'erreur... je gal�re depusi d�j� un bon moment

    Merci d'avance

  2. #2
    Membre confirm�
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    106
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 106
    Par d�faut
    Je signale que j'ai aussi un 0 ou un 1 ou rien qui s'affiche apr�s la chaine de caract�re : "Vos mots-clefs termin�s par un point : " alors que je demande de rien n'afficher...

  3. #3
    Membre �m�rite Avatar de reggae
    Profil pro
    Inscrit en
    Ao�t 2005
    Messages
    773
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 773
    Par d�faut
    Rajoute �a � la fin de ton code:

  4. #4
    Membre confirm�
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    106
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 106
    Par d�faut
    Oui je l'ai fais mais en faite il m'affiche pas "cout << recherchecomplexe.nbMotsClefs;". Il quitte direct apr�s la saisit des mot-clefs

  5. #5
    Membre �clair�
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    63
    D�tails du profil
    Informations personnelles :
    �ge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 63
    Par d�faut
    Bonjour,

    J'ai test� ton code et vu le comportement du programme, le flux d'entr�e se retrouve apparemment dans un �tat invalide apr�s la sortie de la boucle do-while. Pourquoi il se met dans un �tat invalide, j'ai oubli� . Pour en sortir, il faut ajouter ces deux lignes apr�s la lecture de la chaine de caract�res :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    cin.ignore( numeric_limits<streamsize>::max(), '\n' ); // supprimer la ligne erronée dans le buffer
    cin.clear(); // effacer les bits d'erreurs
    cf la FAQ : http://c.developpez.com/faq/cpp/?pag...#SL_cin_verify

    L'autre solution est de remplacer cin >> s par getline(cin, s)

    Je signale que j'ai aussi un 0 ou un 1 ou rien qui s'affiche apr�s la chaine de caract�re : "Vos mots-clefs termin�s par un point : " alors que je demande de rien n'afficher...
    Le 0 ou 1 affich� vient de la ligne 'cout << recherchecomplexe.nbMotsClefs; '

  6. #6
    Membre confirm�
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    106
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 106
    Par d�faut
    J'ai pas encore vu les deux lignes que tu m'indiques

    Pour le cin >> s , je comprend pas... j'ai mis getline(cin,s) d�j�, le pire c'es que je l'ai fais au dessus et �a marche et l� la saisit de la m�me fa�on ne marche plus ou c'est dans mon do while que �a bug ? Dans ce cas je comprends pas, car je fais juste copier des case de tableau dans un autre sans rien toucher d'autre ?

Discussions similaires

  1. Recherche dans un tableau associatif � deux dimensions
    Par General_Batton dans le forum Langage
    R�ponses: 4
    Dernier message: 16/10/2014, 22h47
  2. R�ponses: 2
    Dernier message: 30/08/2014, 11h20
  3. Stocker une string dans un tableau de char � deux dimensions
    Par faitor1 dans le forum Collection et Stream
    R�ponses: 2
    Dernier message: 03/03/2014, 02h12
  4. R�ponses: 6
    Dernier message: 06/02/2012, 20h47
  5. R�ponses: 6
    Dernier message: 19/11/2008, 10h53

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