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 :

compter des caractères et des mots dans une chaine


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 157
    Points : 54
    Points
    54
    Par défaut compter des caractères et des mots dans une chaine
    bonjour tout le monde je doit faire un programme qui compte les caractere et les mot dans un texte entré par l'utilisateur. Et je veux que le texte de l'utilisateur s'affiche mais qu'a x caractère (x choisit par l'utilisateur) un retour à la ligne soit inscrit puis la suite du texte etc, etc.
    J'ai réussi à compter les caractere et le mots mais pour la suite je bloque. J'ai fait ceci:
    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
    #include <iostream>
    #include <string>
    using namespace std;
    int main()
    {
      // Lecture
      string text;
      int l;
      cout << "texte ?"<<endl;
      getline(cin,text);
      cout<<"Entrer le nombre de caractere que vous voulez pour une ligne?"<<endl;
      cin>>l;
     
      // Nombre de caracteres
      size_t len =  text.length();
      cout << "nombre de caractères = " << len <<endl;
     
      // Nombre de mots
      unsigned int nb_words=0;
      for(unsigned int i=0;i<len;i++)
      {
        // avancer jusqu'au prochain mot
        while ((isalpha(text[i]) && i<len)) i++;
     
        // on a atteint la fin d'un mot ou de la chaine
        if (i<=len) nb_words++;
      }
      cout << "nombre de mots = " << nb_words<<endl;
     
     
      if ((text.length())<l){
      cout<<"le texte modifier est:"<<text<<endl;
      }
      else{
        while ((text.length())>l){
    	..........JE BLOQUE
        }
      }  
    }
    sinon je voudrais réecrire le texte que l'utilisateur à donné sauf que à l caractere (l donné par l'utilisateur) on place un retour à la ligne puis on recommence une nouvelle ligne à l caractere onn met un retour à la ligne etc, etc.
    j'ai mis .... dans mon programme à l'endroit ou j'ai du mal.

    SVP aidez moi.
    merci d'avance

  2. #2
    Membre expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Points : 3 065
    Points
    3 065
    Par défaut
    Salut,

    en fait il faut parcourir toute la chaine et des que l'on arrive à un multiple de l caractères, on affiche un endl :
    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
     
    #include <iostream>
    #include <string>
     
    using namespace std;
     
    int main()
    {
       // Lecture
       string text;
       int l;
       cout <<  "texte ?" << endl;
       getline(cin,text);
       cout << "Entrer le nombre de caractere que vous voulez pour une     ligne?" << endl;
       cin >> l;
     
       // Nombre de caracteres
       size_t len = text.length();
       cout << "nombre de caractères = " << len <<endl;
     
       // Nombre de mots
       unsigned int nb_words=0;
       for(unsigned int i=0;i<len;i++)
       {
          // avancer jusqu'au prochain mot
          while ((isalpha(text[i]) && i<len)) i++;
     
          // on a atteint la fin d'un mot ou de la chaine
          if (i<=len) 
               nb_words++;
        }
        cout << "nombre de mots = " << nb_words<<endl;
     
     
         if ((text.length()) < l)
        {
            cout<<"le texte modifier est:"<<text<<endl;
        }
       else
        {
     
           for(int i=0; i<text.length(); i++)
           {
                  cout << text[i];
                  if ((i%l) == 0)
                     cout << endl;
           }
       } 
    }

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 157
    Points : 54
    Points
    54
    Par défaut
    merci beaucoup de votre aide.
    sinon j'avais trouver une autre solution avec substr mais j'arrive pas tres bien à comprendre son fonctionnement vous sauriez ou je pourrais trouver du cours dessus car google n'apporte pas grand chose.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Points : 1 053
    Points
    1 053

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 157
    Points : 54
    Points
    54
    Par défaut
    c'est pas super bien expliqué. Car enfaite il faudrait pas que ça coupe mes mots lorqu'il y a le retour à la ligne donc il faudrait que je trouve le dernier espace de ma ligne pour faire le retour à la ligne.
    Et il faudrais pas que j'utilise une fonction toute faite.
    j'ai fait un truc comme ça


    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
    #include <iostream>
    #include <string>
     
    using namespace std;
     
    int main()
    {
       // Lecture
       string text;
       int l;
       cout <<  "texte ?" << endl;
       getline(cin,text);
       cout << "Entrer le nombre de caractere que vous voulez pour une     ligne?" << endl;
       cin >> l;
     
       // Nombre de caracteres
       size_t len = text.length();
       cout << "nombre de caractères = " << len <<endl;
     
       // Nombre de mots
       unsigned int nb_words=0;
       for(unsigned int i=0;i<len;i++)
       {
          // avancer jusqu'au prochain mot
          while ((isalpha(text[i]) && i<len)) i++;
     
          // on a atteint la fin d'un mot ou de la chaine
          if (i<=len) 
               nb_words++;
        }
        cout << "nombre de mots = " << nb_words<<endl;
     
     
         if ((text.length()) < l)
        {
            cout<<"le texte modifier est:"<<text<<endl;
        }
       else
        {
           while (i!=' ')
           cout<<'\b';
           for(int i=0; i<text.length(); i++)
           {
                  cout << text[i];
                  if ((i%l) == 0)
                     cout << endl;
           }
       } 
    }
    mais ça ne fonctionne pas comme je le souhaite
    merci d'avance de votre aide

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 157
    Points : 54
    Points
    54
    Par défaut
    vous pouvez pas m'aider??

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

Discussions similaires

  1. Supprimer des mots dans une chaine de mots clés
    Par Generation-Web dans le forum Langage
    Réponses: 4
    Dernier message: 03/01/2011, 15h31
  2. Supprimer des mots dans une chaine de caractères
    Par Sanceray3 dans le forum Langage
    Réponses: 3
    Dernier message: 31/08/2009, 11h04
  3. [AC-2000] Comment filtrer des mots dans une chaine de caractères
    Par bionet dans le forum Requêtes et SQL.
    Réponses: 11
    Dernier message: 21/07/2009, 18h16
  4. Réponses: 5
    Dernier message: 21/04/2009, 01h29
  5. Réponses: 4
    Dernier message: 04/03/2009, 10h18

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