Public feed
#723865
#include <stdio.h>#include <string.h>#include <stdlib.h>#define max_long_mot 50#define max_mots 100#define max_long_phras 200char l_mots [max_mots][max_long_mot]={{'\0', }};/* tableau des mots */int l_mots_oc [max_mots]={0};/* tableau des occurences de mots */void resultat_analyse(){/* affiche le tableau contenant les mots et leur nombre d'occurences dans le texte saisie */ int i=0; while (l_mots[i][0]!='\0' && i<max_mots) { printf ("%i\t%s\n",l_mots_oc[i],l_mots[i]); }}void str_copi(int i, char mot[max_long_mot]) { int j=0; while (mot[j]!='\0') { l_mots[i][j]=toupper(mot[i]); j++; } l_mots[i][j]='\0';}int str_cmp_i(char mot_ch[max_long_mot], char mot[max_long_mot]) { int i = 0; int equal = 1; while ( mot[i]!= '\0' && mot_ch[i]!= '\0' && equal) { if (toupper(mot[i]) != toupper(mot_ch[i]) ){ equal=0; } i++; } if ( mot[i] != mot_ch[i] ){ equal=0; } return equal;} int ajoute_mot(char mot[max_long_mot]) { /* incremente l'occurance d'un mot (ajoute au tableau de mots si necessaire */ /* retournee un code d'erreur au cas ou on depasse la capacite */ int i=0; int ajoute=0; printf("trace_ajoute_mot"); while (i<max_mots && ajoute==0) { if ( l_mots[i][0]=='\0' ) { /* si chaine l_mots[i] vide ajouter */ ajoute=1; str_copi(i,mot); l_mots_oc[i]++; } else { if (str_cmp_i(mot, l_mots[i])==0) { /* si c'est la meme chaine (sans tenir compte de la case)*/ ajoute=1; l_mots_oc[i]++; } else { i++; } } } return ajoute;}int parse(char phrase[max_long_phras]) { /* parcours une phrase et ajoute les mots trouvé */ /* retourne un code d'erreur en cas de depassement de capacite */ /* analyse sera directement dans le main pour le momment */ int i,j=0; int mot_ec=0; int stop=0; char mot[max_long_mot]={'\0'}; printf("trace_parse"); while ( phrase[i]!='\0' && stop==0) { switch ( phrase[i] ){ case '\n': case '\t': case ' ' : case '\r': case '!' : if (mot_ec==1) { mot[j+1]='\0'; mot_ec=0; j=0; stop=ajoute_mot(mot); } break; default : if (j<max_long_mot){ mot[j]=phrase[i]; } else { stop=2; } j++; mot_ec=1; } i++; } return stop;}int main () { int i=0; int stop=0; const char phrases[][max_long_phras] = { "coucou bonjour","nouvelle phrase", "encore une phrase","bonjour les phrases", "bonjour la phare","tu pense que cela marche", "haha dark vador trou du cul","encore et encore", "" }; printf ("test"); while (phrases[i][0]!='\0' && stop==0 ) { printf("\n%s", phrases[i]); printf("trace main"); switch ( parse(phrases[i]) ) { case 0: resultat_analyse(); break; case 1: printf("erreur: taille de mot trop grande \n"); break; case 2: printf("erreur: trop de mots \n"); stop=1; break; } } printf ("\nFin du programme \n");}