Tri de fichier sequentiel
Résolu
Tydher
Messages postés
123
Date d'inscription
Statut
Membre
Dernière intervention
-
loupius Messages postés 697 Date d'inscription Statut Membre Dernière intervention -
loupius Messages postés 697 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Tri de fichier sequentiel
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier .dat - Guide
1 réponse
Bien sûr une base de données serait plus adaptée.
Je suppose que tu as deux fichiers, un pour les personnes et un pour les rendez-vous.
Je ne considèrerai que le seul fichier 'Personne'.
Avec 'qsort', Il faut bien savoir deux choses:
- 'qsort' ne peut trier qu'une table composée d'éléments de même taille,
- 'qsort' fait appel à une fonction de comparaison en lui passant deux pointeurs (de type void) sur les deux éléments à comparer.
Dans ton cas, il y a deux solutions:
- le fichier est petit et tout peut être traité en mémoire; alors tu charges ton fichier dans un tableau de structure PERS et tu tries classiquement; une fois triée tu peux sauvegarder le tableau dans un fichier,
- le fichier est trop gros; alors on peut construire un tableau d'entier (de taille égale au nombre d'enregistrement) et remplir ce tableau avec 0, 1, 2, 3, ..., puis il suffit de trier ce tableau... Ne vous fichez pas de moi, je ne vous ai pas encore dit comment faire. En fait tout est dans la fonction de comparaison: 'qsort' va donner deux pointeurs sur deux entiers (par exemple 5 et 8), la fonction va lire dans le fichier le 5ème et le 8ème enregistrement et retourner le résultat de la comparaison (qui n'a donc rien à voir avec le nombre 5 ou 8).
Bonne réflexion.
Je suppose que tu as deux fichiers, un pour les personnes et un pour les rendez-vous.
Je ne considèrerai que le seul fichier 'Personne'.
Avec 'qsort', Il faut bien savoir deux choses:
- 'qsort' ne peut trier qu'une table composée d'éléments de même taille,
- 'qsort' fait appel à une fonction de comparaison en lui passant deux pointeurs (de type void) sur les deux éléments à comparer.
Dans ton cas, il y a deux solutions:
- le fichier est petit et tout peut être traité en mémoire; alors tu charges ton fichier dans un tableau de structure PERS et tu tries classiquement; une fois triée tu peux sauvegarder le tableau dans un fichier,
- le fichier est trop gros; alors on peut construire un tableau d'entier (de taille égale au nombre d'enregistrement) et remplir ce tableau avec 0, 1, 2, 3, ..., puis il suffit de trier ce tableau... Ne vous fichez pas de moi, je ne vous ai pas encore dit comment faire. En fait tout est dans la fonction de comparaison: 'qsort' va donner deux pointeurs sur deux entiers (par exemple 5 et 8), la fonction va lire dans le fichier le 5ème et le 8ème enregistrement et retourner le résultat de la comparaison (qui n'a donc rien à voir avec le nombre 5 ou 8).
Bonne réflexion.