Encore la dichotomie, avec un fichier
Encore la dichotomie, avec des fichiers
Notions utilisées
- Les fichiers
- Les arguments sur la ligne de commande
- L'allocation dynamique des tableaux
Cahier des charges
Il s'agit de lire des entiers qui se trouvent dans un fichier et de mettre ces entiers dans un autre fichier après les avoir classés par ordre croissant. Les entiers qui figurent plusieurs fois en lecture ne figurent qu'une seule fois dans le fichier de sortie.
Les noms du fichier dans lequel on lit les entiers et de celui dans lequel on range les entiers triés sont indiqués par la ligne de commande.
Le nombre total d'entiers n'est pas indiqué dans le fichier de lecture. Le programme doit reconnaître la fin du fichier de lecture.
Si l'utilisateur n'a pas indiqué les noms des fichiers de lecture et d'écriture sur la ligne de commande, ou si le fichier de lecture n'a pas pu être ouvert, un message est indiqué à l'utilisateur et le programme se termine.
Le travail à faire
On reprendra le programme de l'exercice précédent.
On transformera la fonction principale ainsi que les fonctions de saisie et d'affichage pour que le programme effectue sa nouvelle tâche.
Spécifications pour la fonction de saisie
La fonction de saisie :
- compte le nombre d'entiers, distincts ou non, du fichier de lecture ;
- alloue un tableau suffisamment grand pour contenir ces entiers ;
- lit les entiers du fichier de lecture et range dans le tableau par ordre croissant les entiers distincts lus (on peut utiliser la fonction rewind prototypée dans stdio.h pour repartir du début du fichier de lecture);
- réalloue le tableau de façon à ce qu'il ait juste la bonne taille pour contenir les entiers distincts lus (on peut utiliser la fonction realloc prototypée dans stdlib.h) ;
- retourne le nombre d'entiers distincts lus.
Corrigé
Voir le corrigé .
Irène Charon
Last modified: Mon Sep 13 19:11:23 MET DST 1999