Public feed #723865

termitor

public text v1 · immutable
Raw Edit
·published 2007-10-03 02:44 UTC
rendered paste body
#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");}