TP4 Atelier C++ /GL2 INSAT / Tunisie

505 vues

Publié le

TP4 Atelier C++ / INSAT / Tunisie

Publié dans : Formation
0 commentaire
2 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
505
Sur SlideShare
0
Issues des intégrations
0
Intégrations
19
Actions
Partages
0
Téléchargements
10
Commentaires
0
J’aime
2
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

TP4 Atelier C++ /GL2 INSAT / Tunisie

  1. 1. [TP N°4 : INITIATION AU MONDE DE LA PROGRAMMATION C++] Atelier C++ INSTITUT NATIONAL DES SCIENCES APPLIQUEES ET DE TECHNOLOGIE - TUNISIE 1 Prof : Mariem ZAOUALI – Niveau : GL2 1. Objectif de la séance Le but de la séance est de manipuler les notions suivantes :  Fonctions amies  Surcharge des opérateurs  Sauvegarde dans un fichier et récupération des données NB : Durant ce TP, créez les fichiers headers et leurs implémentations, le main fera l’objet d’un fichier .cpp à part 2. Fonctions amies On va reprendre l’exemple du cours. On veut développer une fonction intitulée vecteur produit (const matrice &, const vecteur &) avec :  Vecteur est le type de retour de la fonction produit  Vecteur et matrice sont deux classes à définir o Vecteur  Attribut : un tableau double de taille 3  Méthodes : Un constructeur et une méthode membre d’affichage du vecteur o Matrice  Attribut : un tableau de deux dimensions 3x3 de type double  Méthodes : un constructeur Question 1 : A votre avis, pourquoi choisit-on le passage de paramètres constants par référence ? Question 2 : Où peut-on définir cette fonction, dans la classe vecteur ou matrice ? Justifier votre réponse. Question 3 : Écrivez un petit programme de test. On fournira séparément les deux déclarations de chacune des classes, la définition de produit et le programme de test. 3. Surcharge des opérateurs On va rajouter d’autres méthodes à la classe vecteur. Définissez les opérateurs == et != de manière qu’ils permettent de tester si deux vecteurs ont les même valeurs ou pas. a. en utilisant des fonctions membres; b. en utilisant des fonctions amies. 4. Sauvegarde dans un fichier et récupération des données
  2. 2. [TP N°4 : INITIATION AU MONDE DE LA PROGRAMMATION C++] Atelier C++ INSTITUT NATIONAL DES SCIENCES APPLIQUEES ET DE TECHNOLOGIE - TUNISIE 2 Nous allons manipuler dans ce dernier exercice, la lecture et l’écriture des données d’un fichier avec C++. Il s’agit d’améliorer l’exercice de Homework fait en TP3. On veut rajouter la possibilité que l’utilisateur peut enregistrer le contenu de la map dans un fichier, ou remplir la map à partir d’un fichier.  Q1 : Rajoutez une méthode où vous stockez les données de la map dans un fichier.  Q2 : Rajoutez une méthode où vous lisez les données contenues dans un fichier et vous remplissez la map  Le fichier doit avoir cette structure : 2007-event1#event2#event3# 2008-event1#event2#event3# 2009-event1#event2#event3# 2010-event1#event2#event3# Annexe : Les flots d’entrée et de sortie dans C++1 Cas de lecture du fichier #include <iostream> #include <fstream> // Cet ajout nous permettra d’utiliser ifstream (flux pour la lecture) et ofstrem pour l’écriture #include <string> using namespace std; int main() { ifstream fichier("test.txt", ios::in); // on ouvre le fichier en lecture – ios ::in mode d’ouverture et in pour dire input if(fichier) // si l'ouverture a réussi { // instructions string contenu; // déclaration d'une chaîne qui contiendra la ligne lue while(getline(fichier, ligne)) // tant que l'on peut mettre la ligne dans "contenu" { cout << ligne << endl; // on l'affiche } fichier.close(); //N’OUBLIEZ PAS DE FERMER LE FICHIER } else // sinon cerr << "Impossible d'ouvrir le fichier !" << endl; return 0; 1 http://openclassrooms.com/courses/lecture-et-ecriture-dans-les-fichiers-en-c
  3. 3. [TP N°4 : INITIATION AU MONDE DE LA PROGRAMMATION C++] Atelier C++ INSTITUT NATIONAL DES SCIENCES APPLIQUEES ET DE TECHNOLOGIE - TUNISIE 3 } Cas de l’écriture du fichier Les modes d'ouverture sont :  ios::out (pour output) : spécifie qu'on ouvre le fichier en écriture. Obligatoire - mais par défaut - quand on utilise un objet ofstream ;  ios::app (pour append = ajouter à la suite) : lorsqu'on ouvre le fichier en écriture, on se trouve à la fin pour écrire des données à la suite du fichier (sans effacer le contenu, s'il y en a un). Avec ce mode d'ouverture, à chaque écriture, on est placé à la fin du fichier, même si on se déplace dans celui-ci avant (on verra comment se déplacer un peu plus tard );  ios::trunc (pour truncate = tronquer) : lorsqu'on ouvre le fichier en écriture, spécifie qu'il doit être effacé s'il existe déjà, pour laisser un fichier vide ;  ios::ate (pour at end) : ouvre le fichier en écriture et positionne le curseur à la fin de celui-ci. La différence avec ios::app est que si on se repositionne dans le fichier, l'écriture ne se fera pas forcément à la fin du fichier, contrairement à ios::app. #include <iostream> #include <string> #include <fstream> using namespace std; int main() { ofstream fichier("test.txt", ios::out | ios::trunc); // ouverture en écriture avec effacement du fichier ouvert if(fichier) { string message = " Atelier C++ GL2"; int promotion = 2014; fichier << " C'est la fin de : " << message << '/' << "promotion" << '/' << promotion << endl; fichier << "Bonne continuation " ; fichier.close(); } else cerr << "Impossible d'ouvrir le fichier !" << endl; return 0; }

×