structures de données et algorithmes – tp2 maria-iuliana dascalu [email protected]

13
Structures de données et algorithmes – TP2 Maria-Iuliana Dascalu mariaiuliana.dascalu@gmai l.com

Upload: arlette-georges

Post on 03-Apr-2015

108 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Structures de données et algorithmes – TP2 Maria-Iuliana Dascalu mariaiuliana.dascalu@gmail.com

Structures de données et algorithmes – TP2

Maria-Iuliana [email protected]

Page 2: Structures de données et algorithmes – TP2 Maria-Iuliana Dascalu mariaiuliana.dascalu@gmail.com

Objectifs pour aujourd’hui

• Transition de C (TP1) à C++ (TP2)• Struct vs. classes en C++• Templates

Page 3: Structures de données et algorithmes – TP2 Maria-Iuliana Dascalu mariaiuliana.dascalu@gmail.com

Exercice 1

• Implémentez une fonction pour trier un tableau de 5 éléments de type double. Utilisez un mécanisme d'échange, qui doit être mis en œuvre dans une autre fonction.

• (Tip: Passage par valeur/passage par référence)

Page 4: Structures de données et algorithmes – TP2 Maria-Iuliana Dascalu mariaiuliana.dascalu@gmail.com

Exercice 2

• Ajoutez à classe complex de nouvelles méthodes pour l'ajout, la division et la multiplication de nombres complexes.

Page 5: Structures de données et algorithmes – TP2 Maria-Iuliana Dascalu mariaiuliana.dascalu@gmail.com

#include <iostream>class complex {public:

complex();// constructor without paramscomplex(double param_re, double param_im){//constructor

// use to initialize the members of the class with values and to allocates memory for some membersthis->re=param_re;//re=param_re;this->im=param_im;//im=param_im;

}double getRe(){//method: getter

return re;}double getIm(){//method

return im;}complex complex_conjugate() {//method

complex conjugate(re,-im);//object of type complex return conjugate; }private:

double re; double im;};int main(){ complex number(2,3);// number is an object and complex is a class cout<<"The complex number is: "<<number.getRe()<<"+"<<number.getIm()<<"i"<<"\n";//number.getRe() is a method call complex conj=number.complex_conjugate(); cout<<"The conjugate number is: "<<conj.getRe()<<conj.getIm()<<"i"<<"\n"; return 0;}

Page 6: Structures de données et algorithmes – TP2 Maria-Iuliana Dascalu mariaiuliana.dascalu@gmail.com

Template classtemplate<typename T>class KeyStorage{

public: int key;

T member; //a generic member: we don't know its type when creating the class};int main(){ //Everything happens to compile time, not to run time

//The compiler analyses the way in which you use the classKeyStorage<long> keyElement1; KeyStorage<int> keyElement2; return 0;

}

Page 7: Structures de données et algorithmes – TP2 Maria-Iuliana Dascalu mariaiuliana.dascalu@gmail.com

Exercice 3

• Faisez un constructeur, un destructeur, un getter et un setter pour la classe de modèle KeyStorage.

Page 8: Structures de données et algorithmes – TP2 Maria-Iuliana Dascalu mariaiuliana.dascalu@gmail.com

Aussi bon…#include <iostream.h>template<typename Tip1, typename Tip2>class KeyStorage{public: int key; Tip1 member1; //a generic member: we don't know its type when creating the class Tip2 member2;};int main(){

KeyStorage<long, char> keyElement1;keyElement1.key=1;keyElement1.member1 = 6;keyElement1.member2 = 's';cout<<keyElement1.key<<keyElement1.member1<<keyElement1.member2<<"\n";

return 0;}

Page 9: Structures de données et algorithmes – TP2 Maria-Iuliana Dascalu mariaiuliana.dascalu@gmail.com

Function Templates

template<typename T> T getMax(T a, T b) {

return a > b ? a : b; }……………………………………………………..

getMax<int>(2, 3);getMax<double>(3.2, 4.6);

Page 10: Structures de données et algorithmes – TP2 Maria-Iuliana Dascalu mariaiuliana.dascalu@gmail.com

Exercice 4

• Considérons la fonction suivante qui échange deux objets:template <class T> void swap(T& ob1, T& ob2) { T aux = ob1; ob1 = ob2; ob2 = aux;}Mettez en oeuvre une fonction qui trie un tableau de N = 5

éléments de type double à l'aide de la fonction ci-dessus.

Page 11: Structures de données et algorithmes – TP2 Maria-Iuliana Dascalu mariaiuliana.dascalu@gmail.com

Exercice 5• Mettez en oeuvre la structure suivante nommée Point:struct Point{ //public: int coord_x, coord_y;//the coordinates of a point void reset() //places the point into the origin { coord_x = coord_y = 0; } void moveX(int x); //moves the point horizontally with x positions void moveY(int y); // moves the point vertically with y positions void moveXY(int x , int y); // moves the point horizontally and vertically};Faisez un programme dans lequel on mettre en oeuvre le déplacement d'un point à l'intérieur les

coordonnées d'un rectangle ayant les dimensions 1 x N (N étant donné par l'utilisateur), en partant de l'origine.

Compilez et exécutez l'application! Ensuite, remplacez struct avec classe et faisez la même chose!

Page 12: Structures de données et algorithmes – TP2 Maria-Iuliana Dascalu mariaiuliana.dascalu@gmail.com

Exercice 6• Considérons la structure de Ex.5 et la fonction suivante qui échange deux

objets de type Point!void Schimba(Point &A, Point &B){ int x = A.coord_x; A.coord_x = B.coord_x; B.coord_x = x;

int y = A.coord_y; A.coord_y = B.coord_y; B.coord_y = y;}Créez un programme qui trie 5 points, en prenant en compte la distance de

l'origine.

Page 13: Structures de données et algorithmes – TP2 Maria-Iuliana Dascalu mariaiuliana.dascalu@gmail.com

Devoir

• Terminez les exercices donnés en classe!!!

• Ecrivez un programme en C++ dans laquelle vous définissez une classe nommée BankAccount qui contient les opérations bancaires usuelles (dépôt, retrait, afficher équilibre, propriétaire d'affichage). Testez la classe.