Recherche dichotomique dans un fichier
Fermé
joujou98
-
20 déc. 2018 à 11:32
[Dal] Messages postés 6200 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 7 janvier 2025 - 20 déc. 2018 à 14:08
[Dal] Messages postés 6200 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 7 janvier 2025 - 20 déc. 2018 à 14:08
A voir également:
- Recherche dichotomique dans un fichier
- Fichier rar - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Ouvrir un fichier .bin - Guide
- Comment ouvrir un fichier docx ? - Guide
2 réponses
[Dal]
Messages postés
6200
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
7 janvier 2025
1 097
Modifié le 20 déc. 2018 à 13:36
Modifié le 20 déc. 2018 à 13:36
Salut joujou98,
Si tu dois chercher un mot, pourquoi ne prends-tu qu'un caractère dans le fichier au début de chaque ligne et ne fais-tu une comparaison que du premier caractère du mot passé à la fonction ?
Sais-tu réellement que tes lignes ne font pas plus de 128 caractères ?
Est-ce un dictionnaire de mots de la langue française ? Peux-tu en donner un extrait (quelques lignes d'exemple à partir du début) ?
Ta fonction retourne un long selon son prototype. Là tu ne retournes rien. Que veux-tu retourner ?
Tu devrais améliorer ton style qui est très difficile à lire (et pour la coloration syntaxique sur le forum d'un code en langage C utilise la balise <code c> pas juste <code>). Vois :
https://fr.wikipedia.org/wiki/Style_d%27indentation#Style_K&R
https://www.cas.mcmaster.ca/~carette/SE3M04/2004/slides/CCodingStyle.html ou, mieux, lis le livre de Kernighan et Ritchie ...
Dal
Si tu dois chercher un mot, pourquoi ne prends-tu qu'un caractère dans le fichier au début de chaque ligne et ne fais-tu une comparaison que du premier caractère du mot passé à la fonction ?
Sais-tu réellement que tes lignes ne font pas plus de 128 caractères ?
Est-ce un dictionnaire de mots de la langue française ? Peux-tu en donner un extrait (quelques lignes d'exemple à partir du début) ?
Ta fonction retourne un long selon son prototype. Là tu ne retournes rien. Que veux-tu retourner ?
Tu devrais améliorer ton style qui est très difficile à lire (et pour la coloration syntaxique sur le forum d'un code en langage C utilise la balise <code c> pas juste <code>). Vois :
https://fr.wikipedia.org/wiki/Style_d%27indentation#Style_K&R
https://www.cas.mcmaster.ca/~carette/SE3M04/2004/slides/CCodingStyle.html ou, mieux, lis le livre de Kernighan et Ritchie ...
Dal
c'est déjà précisé j'ai besoin d'une recherche dichotomique
je sais que ma fonction retourne un long, je veux retourner la position de ce mot dans le fichier
la ligne n'est pas un problème mais la recherche dicho j'ai pas su la faire c ça qui minteresse
je sais que ma fonction retourne un long, je veux retourner la position de ce mot dans le fichier
la ligne n'est pas un problème mais la recherche dicho j'ai pas su la faire c ça qui minteresse
[Dal]
Messages postés
6200
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
7 janvier 2025
1 097
Modifié le 20 déc. 2018 à 14:12
Modifié le 20 déc. 2018 à 14:12
Tu ne réponds pas à mes questions, mais c'est toi qui vois.
Ce n'est pas en prenant seulement le premier caractère de chaque mot que tu vas faire une recherche dichotomique.
Tu dois :
- charger tous les mots du dictionnaire (qui sont dans l'ordre alphabétique, puisque c'est un dictionnaire)
- prendre le mot du milieu du dictionnaire et voir si le mot que tu cherches est avant ou après (tu dois donc comparer des mots) et pour cette comparaison il y a une fonction standard dans le langage C que tu devrais utiliser :
- répéter l'opération en prenant le mot à la moitié de la partie dans laquelle le mot devrait se trouver jusqu'à ce que tu tombes sur le mot ou qu'il ne reste plus rien à diviser en deux
Bon courage :-)
Ce n'est pas en prenant seulement le premier caractère de chaque mot que tu vas faire une recherche dichotomique.
Tu dois :
- charger tous les mots du dictionnaire (qui sont dans l'ordre alphabétique, puisque c'est un dictionnaire)
- prendre le mot du milieu du dictionnaire et voir si le mot que tu cherches est avant ou après (tu dois donc comparer des mots) et pour cette comparaison il y a une fonction standard dans le langage C que tu devrais utiliser :
strcmp()voir : http://www.cplusplus.com/reference/cstring/strcmp/
- répéter l'opération en prenant le mot à la moitié de la partie dans laquelle le mot devrait se trouver jusqu'à ce que tu tombes sur le mot ou qu'il ne reste plus rien à diviser en deux
Bon courage :-)