Skip to content

Latest commit

 

History

History
99 lines (63 loc) · 2.16 KB

File metadata and controls

99 lines (63 loc) · 2.16 KB

TP C++ n°8

Tri et recherche dans un fichier

Après les TP sur tri/recherche en mémoire et sur flux, ce TP combine ces compétences pour traiter des données textuelles stockées dans des fichiers.

Objectif

Intégrer lecture de fichier, tri de contenu et recherche d'élément dans une architecture modulaire.

Notions C++

  • lecture d'un fichier en mémoire ;
  • tri de données ;
  • recherche d'élément ;
  • écriture du résultat dans un fichier ;
  • modularisation (trifich, rechfich).

Pré-requis

  • TP n°7 ;
  • tri/recherche dans un tableau.

Travail demandé

Écrire un programme qui :

  1. lit un fichier,
  2. trie son contenu,
  3. écrit le résultat trié,
  4. recherche un caractère donné dans un second fichier.

1. Chargement

Lire le fichier alphabet.txt dans une structure en mémoire.

2. Tri

Trier le contenu lu et produire alphabet.ok.

3. Recherche

Rechercher le caractère I dans mot.txt et afficher une position trouvée.

4. Validation

Vérifier :

  • que alphabet.ok est trié, ;
  • que la position renvoyée est cohérente, ;
  • que les erreurs d'ouverture sont gérées.

Contraintes techniques

  • Compilateur GNU C++ ;
  • Système d'exploitation Linux, Mac OS X ou Ms-Windows ;
  • Standard recommandé : C++11 ou supérieur.

Exemples d'entrée/sortie

Exemple 1 :

  • entrée : alphabet.txt ;
  • sortie : alphabet.ok contenant les caractères triés.

Exemple 2 :

  • entrée : mot.txt, recherche de I ;
  • sortie : affichage d'une position de I (ou -1 si absent).

Compilation

g++ -std=c++11 -Wall -Wextra -o testtr testtr.cxx rechfich.cxx trifich.cxx

Livrables

  • trifich.h, trifich.cxx ;
  • rechfich.h, rechfich.cxx ;
  • testtr.cxx ;
  • README.md (protocole de test et résultats).

Extensions possibles (bonus)

  • Paramétrer les noms de fichiers à l'aide des arguments de ligne de commande ;
  • Comparer le tri implémenté avec std::sort.

Critères d'évaluation

  • Exactitude des traitements ;
  • Robustesse E/S et mémoire ;
  • Qualité de la modularisation ;
  • Qualité des tests et du README.