Robot indexeur

Fermé
varalax Messages postés 61 Date d'inscription mercredi 30 avril 2014 Statut Membre Dernière intervention 28 juillet 2016 - 16 déc. 2014 à 10:21
varalax Messages postés 61 Date d'inscription mercredi 30 avril 2014 Statut Membre Dernière intervention 28 juillet 2016 - 17 déc. 2014 à 11:01
Bonjour,
Dans le cadre de ma formation je dois créer un robot indexeur.
J'en suis au début et je bloque à un endroit c'est pourquoi je fais appel à votre savoir.
Lorsque je lance mon programme, j'écris dans un fichier texte de sortie ce qu'il y a dans un fichier texte d'entrée mot par mot en affichant à chaque fois la ligne qui lui a été attribué (ftell(...)).
Jusque là tous va bien.
Mon problème arrive quand je trouve une récurrence dans mon fichier texte d'entré. Mon programme met à jour le mot trouvé mais il met son numéro de ligne à 0.

Je voudrais dans un premier temps que lorsque mon programme trouve une récurrence, il lui attribue un numéro de ligne approprié.

Dans un deuxième temps je voudrais que le mot apparaisse une seule fois et mettre les numéro de ligne les un à la suite des autres.

Voici un morceau de fichier texte que j'ai en sortie de programme:

As 0
his 3
kingdom 7 <-- kingdom trouvé une fois super!
love 15
is 20
being 23
threatened 29
by 40
like 43
the 48
Turks, 52
young 59
prince 65
Vlad 72
Tepes 77
like 0
love 0
must 93
become 98
a 105
monster 107
feared 115
by 0
his 0
own 129
kingdom 0 <-- kingdom trouvé une deuxième fois ligne à 0 :( ( et je voudrais le mettre
sur la même ligne que le premier!)
Merci d'avance

2 réponses

Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 929
16 déc. 2014 à 14:07
Bonjour, comment espères tu que l'on te dise ce qui ne va pas dans ton code sans le voir?
Pene à la coloration syntaxique.

0
varalax Messages postés 61 Date d'inscription mercredi 30 avril 2014 Statut Membre Dernière intervention 28 juillet 2016
Modifié par Whismeril le 17/12/2014 à 13:51
Oui c'est vrai voila un morceau de mon code : lorsque mon robot trouve un mot qu'il n'a jamais rencontré, il fait appel à la fonction nouvelle_case. Lorsqu'un mot est déja connu par le robot, il met à jour cette case avec la fonction maj_case


void nouvelle_case(FILE* fichier, FILE* fichier2, INDEX *P, int *t_cour, char *[/contents/452-fichier-tmp tmp])
{
 strcpy(P[*t_cour].nom_index, tmp);  //On copiele nom inconnu dans otre index
 P[*t_cour].tab_pos[0]=ftell(fichier)-strlen(tmp); //La position 0 de notre index prend la valeur de la ligne de notre          fichier //
 fprintf(fichier2,"%s   %d\n", tmp, P[*t_cour].tab_pos[0]);
 P[*t_cour].nbpos=1; // La position =1 //
 (*t_cour)++;
}
               
void maj_case(INDEX *P, FILE* fichier,FILE* fichier2, int i)
{
 P[i].tab_pos[P[i].nbpos]= ftell(fichier)-strlen(P[i].nom_index);
 P[i].nbpos++; 
 fprintf(fichier2,"%s   %d\n", P[i].nom_index, P[i].tab_pos[P[i].nbpos]); 
}


EDIT: Ajout de la coloration syntaxique.
0