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 :

reconnaissance d'un mot dans une phrase


Sujet :

C

  1. #21
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 12
    Par défaut
    j'ai tester et le programme marche tres bien.
    Merci beaucoup pour ton aide precieuse!!!
    Cependant j'aurai besoin encore un peu de ton aide car je n'ai pa compris certaines choses dans le programme, j'ai mis des commentaires dans le programme.
    Merci d'aider un jeune etudiant en L1 info lol
    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
    main (){
    	char phrase[50];  /* les 3 char disen qu'on a 3 chaines de caractere*/
    	char mot[30];
    	char tmp[30];  /* a quoi sert le tmp?*/
        int i,j,trouve=0;  
     
        printf("\n Entrez une phrase : ");
        gets(phrase);
        printf("\n Entrez le mot a rechercher : ");
        gets(mot);
        tmp[strlen(mot)]='\0'; /*tres importante, la fin d une chaine de caractere (pa du tout compris lol)*/
     
        for(i=0;i<=(strlen(phrase)-strlen(mot));i++) 
        {
            for(j=i;j<i+strlen(mot);j++) /*copiage des caractere a partir du j éme caractere du phrase*/
            {
                tmp[j-i]=phrase[j];
            }
     
            if(!strcmp(tmp,mot)) /*si le mot temporaire est le meme que le mot c'est gagné*/
           /* je ne oomprend pas le ! avant srtcmp*/
    		{
                printf("\nMot trouve");
                trouve=1; /* a quoi sert il? */
                break; /*on sort du boucle*/
            }
        }
        if(!trouve)
    	{
    		printf("\nMot non trouve\n");
    	}
        return 0;
    }
    j'ai aussi un probleme a propos des "trouve"
    Merci

  2. #22
    Membre éprouvé Avatar de siegfried64
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Maroc

    Informations forums :
    Inscription : Novembre 2007
    Messages : 78
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char phrase[50];  /* les 3 char disen qu'on a 3 chaines de caractere*/
    correcte

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char tmp[30];  /* a quoi sert le tmp?*/
    comme j'ai deja dit, a chaque iteration on notre mot avec n caracteres tiré du phrase, n c'est le nombre de caractere du mot : n=strlen(mot).
    pour pouvoir faire cette comparaison, on a besoin de mettre ces n caracteres dans un variable, qui est bien tmp la (temporaire) pour pouvoir utiliser de suite strcmp(mot,tmp).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tmp[strlen(mot)]='\0'; /*tres importante, la fin d une chaine de caractere (pa du tout compris lol)*/
    \0 indique que c'est la fin du chaine de caractere, comme on s interesse comme j'ai deja dit qu aux n (n=strlen(mot)) lettres premieres de tmp, on fait ca pour l indiquer. sinon ca n aurai causé des problems lors du strcmp(mot,tmp).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(!strcmp(tmp,mot)) /*si le mot temporaire est le meme que le mot c'est gagné*/
           /* je ne oomprend pas le ! avant srtcmp*/
    la ! ca signifie not (non), if(!x) signifie si le contraire de x, tu peux la remplacer par if(strcmp(tmp,mot)==0) ca fait la meme chose.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    trouve=1; /* a quoi sert il? */
    j'ai juste utilisé ce variable pour ne pas afficher le message "mot non trouve" a la fin du program au cas ou le mot a été trouvé.

  3. #23
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 12
    Par défaut
    le programme a un petit probleme.( ou c'est encore moi qui bloque)
    Exemple:
    si je rentre comme phrase 'bonjour monsieur'
    et que je saisi comme mot 'mon'
    il me dit que le mot est trouvé, es ce normal?
    Dapres ce que j'ai compris du sujet, il doit dire qu'il trouve le mot seulement si le mot complet est trouvé et pa seulement une partie??

  4. #24
    scr
    scr est déconnecté
    Membre éprouvé
    Inscrit en
    Juin 2005
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 127
    Par défaut
    je crois qu'il va te falloir un autre programme...

  5. #25
    Membre éprouvé Avatar de siegfried64
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Maroc

    Informations forums :
    Inscription : Novembre 2007
    Messages : 78
    Par défaut
    j'ai pas compris de l'enoncé qu il demande ca, mais en tout cas voila un code qui gere cette situation :

    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
        char phrase[50],mot[30],tmp[30];
        int i,j,trouve=0,k;
     
        printf("\n entrez une phrase : ");
        gets(phrase);
        printf("\n entrez le mot a rechercher : ");
        gets(mot);
        tmp[strlen(mot)]='\0';
     
        for(i=0;i<=(strlen(phrase)-strlen(mot));i++)
        {
            for(j=i;j<i+strlen(mot);j++)
            {
                tmp[j-i]=phrase[j];
            }
            k=i+strlen(mot);
            if(i!=0)
            {
            if((strcmp(tmp,mot)==0)&&((phrase[k]==' ')||(phrase[k]==',')||(phrase[k]==';'))&&((phrase[i-1]==' ')||(phrase[i-1]==',')||(phrase[i-1]==';')))
     
     
            {   printf("\nMot trouve");
                trouve=1;
                break;
            }
            }
            else if((strcmp(tmp,mot)==0)&&((phrase[k]==' ')||(phrase[k]==',')||(phrase[k]==';')))
            {   printf("\nMot trouve");
                trouve=1;
                break;
            }
            if((strcmp(mot,tmp)==0)&&(k==strlen(phrase)))
            {   printf("\nMot trouve");
                trouve=1;
                break;
            }
     
        }
        if(!trouve) printf("\nMot non trouve");
         return 0;
    ca n'affiche que c'est trouvé que si le mot est separé des autres mots par , ; oou un espace ou plusieurs

  6. #26
    scr
    scr est déconnecté
    Membre éprouvé
    Inscrit en
    Juin 2005
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 127
    Par défaut
    Citation Envoyé par siegfried64 Voir le message
    ca n'affiche que c'est trouvé que si le mot est separé des autres mots par , ; oou un espace ou plusieurs
    Et ca fait mal à cerveau a cette heure ci...
    Il doit y avoir plus simple : rechercher les caractères séparateurs dans ta chaîne pour extraire les mots et tester chaque mot au fur et a mesure avec strcmp.

  7. #27
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 12
    Par défaut
    ce que je voudrais c'est que le programme me dise qu'il a trouver le mot seulement si le mot recherché est un mot entier qu'on retrouve dans la phrase et pas seulement si on lui a doné une partie.
    ex: si je met comme phrase 'c'est un test' et com mot je saisi 'te', le programme actuel me di mot trouvé, mais moi je voudrais su'il retourne mot non trouver, et qu'il me dise mot trouvé seulement si le mot saisi est identique a in mot de la phrase.

  8. #28
    Membre éprouvé Avatar de siegfried64
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Maroc

    Informations forums :
    Inscription : Novembre 2007
    Messages : 78
    Par défaut
    c'est bien ca ce que j avais fait, essaie avec le dernier code que j'ai posté, il doit y avoir de plus simple mais pour le moment celui la marche tres bien

  9. #29
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 12
    Par défaut
    j'ai tester le dernier code posté et a priori il correspond exactement a ce que je cherchait. Merci beaucoup pour votre aide ( surtout a siegfried64 et a sa patience ) a une heure aussi tardive. Bonne soirée a tous!

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [RegEx] supprimer des mots dans une phrase
    Par anarchoi dans le forum Langage
    Réponses: 6
    Dernier message: 10/05/2007, 10h44
  2. 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, 22h01
  3. requête pour trouver un mot dans une phrase
    Par FRIGAUX dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 25/11/2006, 23h18
  4. recherche par mots dans une phrase ou titre
    Par pierrot67 dans le forum Bases de données
    Réponses: 3
    Dernier message: 11/09/2006, 10h29
  5. Recherche d'un mot dans une phrase se touvant dans un champ
    Par Grandbastien dans le forum Access
    Réponses: 3
    Dernier message: 02/04/2006, 10h58

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