PROFDINFO.COM

Votre enseignant d'informatique en ligne

Exercice 6.1 - Une classe de manipulation de fichiers textes

  1. Écrivez une classe qui permet de compter le nombre de lignes d'un fichier texte. Compilez, puis testez votre classe avec un programme principal. Votre classe devrait contenir :
    • Un attribut ifstream pour conserver le lien vers le fichier d'entrée
    • Un attribut entier pour le nombre de lignes
    • Une méthode privée qui compte le nombre de lignes dans le fichier de l'objet et qui conserve le résultat dans l'attribut
    • Un constructeur acceptant un string contenant le chemin/nom vers un fichier à ouvrir, qui ouvre le fichier et compte le nombre de lignes automatiquement
    • Un destructeur (qui ne sera pas vide! -- de quoi devra-t-il s'occuper?)
    • Les accesseurs et mutateurs pertinents pour les attributs -- attention à l'encapsulation, certains mutateurs pourraient être privés et certains accesseurs auraient tout intérêt à retourner une référence constante!
  2. Modifiez votre classe de façon à ce qu'elle crée un tableau dynamique de string dont la taille correspond au nombre de lignes dans le fichier. Ensuite, votre classe doit lire le contenu du fichier ligne par ligne dans le tableau de string. Finalement, votre classe doit permettre d'écrire le tableau de string dans un autre fichier texte. N'oubliez pas de détruire votre tableau dynamique!
    • Ajoutez un attribut string* pour pointer vers le tableau dynamique de lignes
    • Créez une méthode publique qui permet d'ouvrir le fichier avec son nom passé en paramètre dans un string, ce qui le chargera en mémoire.
      • Cette méthode commencera par vérifier si un fichier a déjà été chargé et si c'est le cas, elle doit fermer le fichier et détruire le tableau dynamique déjà présent
      • Ensuite, elle tentera d'ouvrir le fichier dont le nom a été reçu en paramètre et comptera les lignes pour créer un tableau dynamique de la bonne taille. Elle pourra ensuite relire le fichier pour le charger dans le tableau, une ligne par case.
      • Pensez aux cas d'erreur possible (qu'est-ce qui se passe si le fichier n'existe pas?) et à ne pas laisser des tableaux de strings dans le tas pour rien! (qu'est-ce qui se passe si on ouvre un fichier une deuxième fois?)
      • Serait-il pertinent de modifier le comportement du constructeur?
    • Créez une méthode publique qui permet d'écrire dans un fichier le contenu du tableau de strings chargé précédemment. Attention aux cas d'erreur!
  3. Ajoutez à votre classe une fonctionnalité qui permet de compter le nombre de mots dans le tableau de string. Il peut y avoir plusieurs mots par ligne. Les mots peuvent être séparés par un espace, une virgule, un point ou un point-virgule.
    • On supposera que le fichier est bien écrit, sans cas spéciaux comme deux séparateurs de suite avec rien entre les deux, ou autres trucs du genre.
    • La fonction doit retourner un nombre entier correspondant au nombre de mots.

Exercice 6.2 - La guerre des étoiles

Contexte

 

"C'est une époque de guerre civile. À bord de vaisseaux spatiaux opérant à partir d'une base inconnue, les Rebelles ont remporté leur première victoire sur l'abominable Empire Galactique"

Les vaisseaux sont modélisés par la classe CVaisseau qui comporte les attributs suivants:

Il y a deux classes de vaisseaux:

Téléchargez le projet de départ suivant: Ex6.2 2015 (Etudiants).zip.

Vous devez créer la classe CAttaquant qui dérive de la classe CVaisseau et qui contient les méthodes suivantes:

Vous devez aussi créer la classe CReparateur qui dérive aussi de la classe CVaisseau et qui contient les méthodes suivantes:

Il faut que les informations des vaisseaux soient lues à partir d'un fichier texte facilement modifiable. Cela permet de créer différentes équipes à l'infini sans avoir à recompiler le programme!! La lecture du fichier texte est partagée entre la fonction LireFichier qui lit le début de la ligne pour identifier la classe de vaisseau à créer et le nom de l'image à utiliser pour créer le vaisseau. Ensuite, l'image et le flux d'entrée sont passés au constructeur de CAttaquant ou de CRéparateur. Ces informations sont refilées au constructeur de CVaisseau qui s'occupe de lire et décoder les informations restantes sur la ligne afin d'initialiser les attributs de CVaisseau.

Vous devez donc programmer les fonctions et le constructeur suivants:

Ensuite, lisez bien le programme principal, il y a certaines fonctions que vous devez compléter...

Finalement, il vous faut créer un fichier de statistiques nous permettant de connaitre l'état des vaisseaux avant et après la simulation. Pour ce faire, programmez:

Compilez, testez et admirez le magnifique résultat!!