projet en c

projet en c - C - Programmation

Marsh Posté le 30-11-2007 à 21:27:05    

Bonjour,
 
Voilà mon projet : Ecrire en C un programme qui reconnaît si un mot est  
compris dans une phrase. Attention, les mots peuvent être séparés par  
plusieurs espaces, ou par une virgule.
(Utilisez la fonction STRCMP)

 
Si j'ai bien compris, voila les différentes étapes à programmer :  
* demander de la saisie de la phrase à l'utilisateur
* demander la saisie du mot à chercher
* mettre dans un char cette phrase
* séparer les mots (un mot étant un ensemble de caractère commençant par un 'espace' et se terminant par un 'espace' et aussi un mot commençant par un 'espace' et se terminant par une 'virgule')
* mettre chacun des mots à l'intérieur d'un tableau et vérifier en même temps si ce mot sans les espaces ou virgules est le même que le mot à rechercher et si c'est le même mot, il faut retenir la position de celui ci pour la redonner par la suite à l'utilisateur.
 
 
vous me  conseiller  de faire un algo qui ne va pas chercher a comparer les mots  Suis-je sur la bonne voie?
si oui comment faire cette algo svp..
 
 
voila jai se projet en c a faire pour bientot  jespere qui vous etes dacors pour m'aider

Reply

Marsh Posté le 30-11-2007 à 21:27:05   

Reply

Marsh Posté le 30-11-2007 à 22:24:14    

Ah te revoilà [:petrus75] Du coup tu as changé de méthode. Pourquoi pas, mais le fait de séparer la phrase en plusieurs mots est barbare et beaucoup plus compliqué que la méthode classique.


Message édité par ngkreator le 30-11-2007 à 22:24:42
Reply

Marsh Posté le 30-11-2007 à 22:57:59    

je  narrive pas copier lintégrale de chaine dans temp  
int y;
char temp[20],chaine[20];
fgets(chaine, sizeof(chaine), stdin);
search(chaine);
 
//initializ variable
y=0;
 while (y<=(strlen(chaine)-1))
    {
    temp[y]=chaine[y];
    y=y+1;
    }
     
et le resultat me donne
printf("temp vaut :'%s'\n",temp);
 
le reslutat il me sort temp = '

Reply

Marsh Posté le 30-11-2007 à 23:21:46    

es-tu sur qu'il y a quelque chose dans chaine ?

Reply

Marsh Posté le 30-11-2007 à 23:28:48    

oui biensur  on me demande de saisir

Reply

Marsh Posté le 01-12-2007 à 01:04:54    

je ne te demande ce qu'on demande de faire, je te demande de me confirmer que ta variable chaine n'est pas vide ? Tu saurais faire ça ?

Reply

Marsh Posté le 01-12-2007 à 01:35:18    

Ba le programme demande de saisir une chaine ( pour mes test je ne vois pas l'interet de tester une varaible vide !!! ), donc non lors du traitement ma variable n'est pas vide !
et ç'est d'ailleur pourquoi g poster le message sur ce forum !!!!!

Reply

Marsh Posté le 01-12-2007 à 08:18:41    

Je ne sais pas si c'est lié à ton problème, mais il y a plusieurs problèmes avec ton code :
 
1) Tu ne copies pas le '\0' final... Par conséquent ta chaine temp n'est pas terminée, et ton printf va afficher n'importe quoi
 
2) Je suppose que tu as bien fais un #include de stdio.h et de string.h ?
 
3) "while (y<=(strlen(chaine)-1)) " outre le fait que ça te fais manquer le '\0' final, c'est totalement inefficace. Comment crois-tu que strlen détermine la taille de la chaine ? Il la parcours jusqu'à trouver le '\0' final. Donc à chaque tours de ta boucle, tu parcours la chaine en intégralité. Donc au final tu parcours (taille de ta chaine au carré) octets. Fais plutôt un truc du genre "while ((temp[y] = chaine[y++]));"

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed