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 programme qui calcule le nombre d occurence d un mot dans une chaine de caractére


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2010
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 126
    Points : 0
    Points
    0
    Par défaut un programme qui calcule le nombre d occurence d un mot dans une chaine de caractére
    salut j ai pas réussie a résoudre le problème de calcule le nombre d occurrence d un mot dans une chaine de caractère en c
    j ai fait une réflexion par exemple calculer les espace mais j ai trouver que sa aucun rapport comme ce si:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    char tab[100]=" je m'appelle komat  ";
        int i, nb=1;
        for(i=0;i<strlen(tab);i++){
            if(tab[i]==' ') nb++;
            }
     
            printf("le nombre des mots est : %d\n",nb);
    merci d avance
    est ce qui il ya une autre fontion qu on l on va ajouté?

  2. #2
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 442
    Points
    4 442
    Par défaut OCCURENCE DE MOT DANS UNE CHAINE EN C,fonction strtok
    il faut voir du cote de strtok.
    tout a ete prevu malheureusement pour nous.
    strtok compte les mots('token") dans une phrase ou chaine separe par un delimiteur à fournir en entree.
    elle renvoie un pointeur sur le 1er mot trouve au premier appel ,ensuite dans les appels subsequents suivants le pointeur avance sur le prochain mot ,et renvoie NULL en fin de phrase ou chaine .

    Voici le code en c++ mais tu dois rajouter du code (en commentaires) pour comparer le mot cherche avec le mot renvoye par le pointeur de strtok et incrementer ton compteur d'occurence.
    j'ai horreur des tildes et des ;
    moi j'aime instr() en vb
    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
     
     2  // Using strtok.
     3  #include <iostream>
     4  using std::cout;
     5  using std::endl;
     6
     7  #include <cstring> // prototype for strtok
     8  using std::strtok;                        
     9
    10  int main()
    11  {
    12     char sentence[] = "This is a sentence with 7 tokens";
    13     char *tokenPtr;
          //  char *motCherche="komat";
          //  int  compteMot =0;
    14
    15     cout << "The string to be tokenized is:\n" << sentence
    16        << "\n\nThe tokens are:\n\n";
    17
    18     // begin tokenization of sentence
    19     tokenPtr = strtok( sentence, " " );
    20
    21     // continue tokenizing sentence until tokenPtr becomes NULL
    22     while ( tokenPtr != NULL )
    23     {
             // 
    24        cout << tokenPtr << '\n';
            // if  motCherche==tokenPtr  {
            // compteMot++};
    25        tokenPtr = strtok( NULL, " " ); // get next token
     
    26     } // end while
    27
    28     cout << "\nAfter strtok, sentence = " << sentence << endl;
    29     return 0; // indicates successful termination
    30  } // end main
     
     
     
     
     The string to be tokenized is:
     This is a sentence with 7 tokens
     
     The tokens are:
     
     This
     is
     a
     sentence
     with
     7
     tokens
     
     After strtok, sentence = This
    bon code....

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2010
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 126
    Points : 0
    Points
    0
    Par défaut
    j ai compris la fonction strtok mais j ai rien compris le code parce que j ai pas etudie le c++ je veut le code seulement en c et j ai vu que le code qui est d une chaine statique moi je veut seulement un code d une chaine dynamique qui ne change pas.
    merci d avance

  4. #4
    Membre expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Points : 3 016
    Points
    3 016
    Par défaut
    Bonjour,

    Tu peux compter le nombre d'espaces et utiliser la fonction strcmp pour comparer les chaines de caractères.

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2010
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 126
    Points : 0
    Points
    0
    Par défaut
    safé une semaine que je casse ma tète avec cette exercice je sais pas comment utiliser cette fonction de strcmp
    est ce que quelqu un peu m aider cette exercice est trop dure
    je veut la solution en C pas de C++ je conné que du C
    merci d avance

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Points : 1 750
    Points
    1 750
    Par défaut
    je sais pas comment utiliser cette fonction de strcmp
    Pourtant, ce n'est pas ce qui manque comme ressources sur Internet. As-tu cherché ?

    Le man de la fonction (trouvé en 5 secondes via Google) : http://man.developpez.com/man3/strcmp.3.php

    En programmation, d'une manière générale, il faut tester, bidouiller, essayer, chercher. Notamment, lorsqu'on veut mieux comprendre une fonction, il faut la tester et bidouiller pour mieux assimiler son fonctionnement.

    je veut la solution en C pas de C++ je conné que du C
    Vu que le code proposé est un affreux mélange de C et de C++, il suffit simplement de virer tout ce qui est C++ et de remplacer par l'équivalent C. En l'occurrence, les seules choses à supprimer sont les cout, qu'il faut remplacer par printf.

    EDIT : Par contre, vu la question d'origine (un peu ambiguë), je ne comprends pas quelle sera l'utilité de strcmp dans ton exo. Tu veux compter le nombre de mots présent dans ta chaine (strcmp ne servira à rien) ou compter le nombre de fois qu'un mot déterminé apparait (strcmp sera utile) ?

  7. #7
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 721
    Points : 31 044
    Points
    31 044
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par komat Voir le message
    et j ai vu que le code qui est d une chaine statique moi je veut seulement un code d une chaine dynamique qui ne change pas.
    I.N.C.O.M.P.R.E.H.E.N.S.I.B.L.E !!!

    Citation Envoyé par komat Voir le message
    j ai compris la fonction strtok
    Ben si t'as compris, utilise-là !!!

    Accessoirement, tu devrais utiliser strtok_r() car strtok() possède le gros défaut de ne pas être réentrant...

    Citation Envoyé par komat Voir le message
    je sais pas comment utiliser cette fonction de strcmp
    Pfff. strcmp(x, y) renvoie un nombre négatif si x < y; positif si x > y et 0 si x == y. C'est ultra simple à comprendre. Si déjà tu pêches là-dessus...

    Citation Envoyé par komat Voir le message
    cette exercice est trop dure
    Hum... tu n'envisagerais pas de changer de spécialité par hasard ?

    Citation Envoyé par komat Voir le message
    je veut la solution en C pas de C++
    Bien votre altesse

    Citation Envoyé par komat Voir le message
    je conné que du C
    Hum..."conné" c'est peut-être un petit-peu exagéré non ???

Discussions similaires

  1. compter le nombre d'occurences d'un mot dans une chaine
    Par huître dans le forum VBA Access
    Réponses: 8
    Dernier message: 15/10/2014, 15h19
  2. Réponses: 2
    Dernier message: 06/01/2010, 12h32
  3. Nombre d'occurences d'un mot dans une phrase
    Par cirtey dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 07/05/2007, 21h01

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