Progr. de satistiques en C

cr4ber Messages postés 2 Date d'inscription mercredi 12 avril 2006 Statut Membre Dernière intervention 27 avril 2006 - 12 avril 2006 à 15:01
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011 - 27 avril 2006 à 08:09
le compilateur ouvre un fichier texte, le parcours caractére par caractére et ligne par ligne et mot par mot et puis un fais un genre de statistiques
le mot le plus répété
le caractére le plus répété
nombre de lignes
nombre de mots
nombres de paragraphes
s'il vous plait aidez moi ca urge
merci!!!

5 réponses

ben92600 Messages postés 56 Date d'inscription dimanche 13 novembre 2005 Statut Membre Dernière intervention 11 juillet 2006
12 avril 2006 à 15:46
pour le nombre de ligne tu fait un fichier qui te donner le fichier ligne par ligne jusqua la fin et tu incremente une variable

pour le caractere le plus utiliser y une solution c est de cree un
tableau de 255 case et a chaque carractere tu annalyse tu increment la
case du tableau en consequence

la mot le plus utiliser sa devien un peu plus compliquer et j ai pas trop le temp de lexpliquer la

nombre de mot tu compte le nombre despace sa devrais te donner un nombre assez proche

nombre de paragraphe le nombre de double \n



enfin voila j espere que sa va t aider ;)
0
Guillemouze Messages postés 991 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 29 août 2013 6
12 avril 2006 à 23:56
c pas l'armée du salut ici non plus !!!

moi j'te conseille flex, c ce quil y a de plus rapide et efficace (et ca se compile en C).
voila en gros le contenu (je suis plus trop sur de la synthaxe exacte):

{%
#define MAX_MOTS 2048;
char buffer [255];
int idChar;
int nbLigne;
int nbMot;
char **mots;

void caractere(char car) {
buffer[idChar] = car;
idChar++;
}

void finmot() {
buffer[idChar] = '\0',
int taille = strlen(buffer);
char *str = (char*)malloc(taille*sizeof(char));
strcpy(str, buffer);
idChar = 0;
mots[nbMot] = str;
nbMot++;
}

void newline() {
if (idChar > 0) {
finmot();
}
nbLigne++;
}

%}

blanc [\t ]
nl [\n]

%%

blanc {finmot();}
nl {newline();}
. {caractere(yytext[0]);}

%%

int main(int argc, char **argv) {
idChar = 0;
nbLigne = 0;
nbMot = 0;
mots = (char**) malloc(MAX_MOTS * sizeof(char*));
yyin = fopen("monfichier.txt", "r");
yyparse();
printf("%d mots, %d lignes, dernier mot ajoute : %s\n", nbMot, nbLigne, mots[nbMot-1]);
return 0;
}
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
13 avril 2006 à 11:46
ce code répond en partie à ton pb

http://www.cppfrance.com/codes/DENOMBREMENT_26066.aspx

c'est une application de celui ci:

http://www.cppfrance.com/codes/STATISTIQUES_26065.aspx

___________________________________________________________
Magicalement
Nono
0
cr4ber Messages postés 2 Date d'inscription mercredi 12 avril 2006 Statut Membre Dernière intervention 27 avril 2006
27 avril 2006 à 00:04
merci pour tout le monde! votre aide m'a été vraiment fructueuse!!
g un autre truc a vous demander les gars...
est ce que qulequ'un c ou est ce qu'on pourrait avoir les codes sources de Linux..n'importe quelle version qu'elle soit
en faite je voudrais connaitre les codes sources des commandes wc et ls par exemple sur Linux comment pourrais je faire? merci d'avance!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
27 avril 2006 à 08:09
tu as ça avec toutes les bonnes distrib linux
c'est le principe

ceci dit,
le code sera optimisé pour ces commandes de bases
et donc certainement en assmb

___________________________________________________________
Magicalement
Nono
0
Rejoignez-nous