Question

Je suis occupé à programmer une classe qui crée un index à partir d'un fichier texte ASCII / BINARY. Mon problème est que je ne sais pas vraiment comment commencer. J'ai déjà eu quelques essais mais aucun n'a vraiment bien fonctionné pour moi. Je n'ai pas besoin de trouver l'adresse du fichier via la MFT. Il suffit de charger le fichier et de rechercher des éléments beaucoup plus rapidement en recherchant la clé dans le fichier-index et en allant dans le fichier-texte à l'adresse indiquée.

Le fichier-index doit être construit comme suit:

KEY        ADDRESS  
  1        0xABCDEF    
  2        0xFEDCBA    
  .           .  
  .           .  

Nous avons un fichier texte avec la valeur d'exemple suivante:

1, 8752 FW,
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++, 
******************************************************************************, 
------------------------------------------------------------------------------;

J'espère que cela explique un peu mieux ma question. Merci!

Était-ce utile?

La solution

Il me semble que tout ce que votre classe doit faire est de stocker un tableau de pointeurs ou de décalages de début de fichier vers les emplacements clés du fichier.

Cela dépend vraiment de ce que vos emplacements de clés représentent.

Je vous conseillerais d'accéder au fichier par le biais de votre classe à l'aide de méthodes publiques. Vous pouvez alors plus facilement associer des emplacements clés aux données écrites.

Par exemple, vos emplacements de clé peuvent être l'emplacement de départ de chaque nouveau bloc de données écrit dans le fichier. par exemple. premier bloc 1000 octets, emplacement clé 0; deuxième bloc 2500 octets, emplacement de clé 1000; troisième bloc 550 octets; emplacement clé 3500; le prochain bloc sera 4050 en supposant que 0 soit le premier octet.

Stockez les valeurs de clé dans un tableau de longueur variable afin de récupérer facilement le point de départ d'un bloc de données.

Si votre clé est signalée par un caractère clé, vous pouvez utiliser la même classe, mais avec une légère modification pour enregistrer où la valeur de clé est stockée. Le moyen le plus simple consiste à parcourir les données jusqu'à ce que le caractère clé soit localisé, en comptant le nombre de caractères cochés au fur et à mesure. Le nombre est ensuite utilisé pour produire votre emplacement clé.

Autres conseils

Votre extrait de code n'est pas vraiment une idée, mais bien la fonctionnalité que vous souhaitez au final.

Reconnaissez que "l'indexation" signifie simplement "se souvenir" où les choses sont situées. Vous pouvez le faire en utilisant n’importe quelle structure de données de votre choix ... Arbre B, Arbre rouge / noir, BST ou des structures plus avancées telles que des arborescences de suffixes / des tableaux de suffixes.

Je vous recommande d'examiner de telles structures de données.

modifier:

avec les nouvelles informations, je vous suggère de faire votre propre recherche clé / valeur. Construisez un tableau de clés et associez leurs valeurs d’une manière ou d’une autre. cela peut vouloir dire construire une classe ou une structure contenant à la fois la clé et la valeur, ou bien contenir la clé et un pointeur sur une structure ou une classe avec une valeur, etc.

Une fois cette opération effectuée, triez le tableau de clés. Vous avez maintenant la possibilité d'effectuer une recherche binaire sur les clés pour trouver la valeur appropriée pour une clé donnée.

Vous pouvez créer une table de hachage de la même manière. vous pouvez construire un BST ou une structure similaire, comme je l'ai mentionné plus tôt.

Je ne comprends toujours pas vraiment la question (travaillez sur votre question demandant à skillz), mais pour autant que je sache, l'algorithme sera:

  1. balayez le fichier linéairement, la première valeur jusqu'à la première virgule (',') est probablement une clé. Toutes les autres clés apparaissent partout où un ';' se produit, jusqu'au prochain ',' (vous devrez peut-être ignorer les sauts de ligne ici). S'il s'agit d'un devoir, utilisez simplement scanf () ou quelque chose pour lire la clé.
  2. affiche la position de la clé et de l'octet où vous l'avez trouvée dans votre fichier d'index

AFAIUI c'est l'algorithme, je ne vois pas vraiment le problème ici?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top