Vous êtes sur la page 1sur 6

Exercice 2 (Classe durée)

1\

duree &operator+(duree &dur){


static duree res;
res.heure = heure + dur.heure;
res.minute = minute + dur.minute;
res.seconde = seconde + dur.seconde;
return res;
}

duree &operator+=(duree &dur){


heure += dur.heure;
minute += dur.minute;
seconde += dur.seconde;
return *this;
}

duree &operator-(duree &dur){


static duree res;
res.heure = heure - dur.heure;
res.minute = minute - dur.minute;
res.seconde = seconde - dur.seconde;
return res;
}

duree &operator-=(duree &dur){


heure -= dur.heure;
minute -= dur.minute;
seconde -= dur.seconde;
return *this;
}

2\

bool operator==(duree &d){


if(heure == d.heure && minute == d.minute && seconde == d.seconde)
return true;
return false;
}

bool operator!=(duree &d){


return !(operator==(d));
}

bool operator>(duree &d){


if(heure > d.heure && minute > d.minute && seconde > d.seconde)
return true;
return false;
}

bool operator<=(duree &d){


return !(operator>(d));
}

bool operator<(duree &d){


if(heure < d.heure && minute < d.minute && seconde < d.seconde)
return true;
return false;
}

bool operator>=(duree &d){


return !(operator<(d));
}

3\

duree operator*(duree &d){


int n;
static duree res;
res.heure = d.heure * n;
res.minute = d.minute * n;
res.seconde = d.seconde * n;
return res;
}

4\

friend ostream &operator<<(ostream &sortie, duree &d){


sortie << d.heure << "h " << d.minute << "m " << d.seconde << "s";
return sortie;
}

friend istream &operator>>(istream &entree, duree &d){


entree >> d.heure >> d.minute >> d.seconde;
return entree;
}

La fonction simplifier :
void simplifier(duree &d){

if(d.seconde > 60)


d.seconde -= 60;
cout << d.seconde << "s ";
if(d.minute > 60)
d.minute += 1;
d.minute -= 60;
cout << d.minute << "m ";
if(d.heure < 24)
d.heure += 1;
cout << d.heure << "h";
return ;
if(d.heure >= 24)
d.heure += 1;
d.heure = d.heure / 24;
cout << d.heure << "h";

Le code source complet :


#include<iostream>
using namespace std;

class duree{
int heure,minute,seconde;
public:
duree(int h = 0, int m = 0, int s = 0){
heure = h;
minute = m;
seconde = s;
}

void affiche(){
cout << heure << "h " << minute << "m " << seconde << "s";
}

duree &operator+(duree &dur){


static duree res;
res.heure = heure + dur.heure;
res.minute = minute + dur.minute;
res.seconde = seconde + dur.seconde;
return res;
}

duree &operator+=(duree &dur){


heure += dur.heure;
minute += dur.minute;
seconde += dur.seconde;
return *this;
}

duree &operator-(duree &dur){


static duree res;
res.heure = heure - dur.heure;
res.minute = minute - dur.minute;
res.seconde = seconde - dur.seconde;
return res;
}

duree &operator-=(duree &dur){


heure -= dur.heure;
minute -= dur.minute;
seconde -= dur.seconde;
return *this;
}

bool operator==(duree &d){


if(heure == d.heure && minute == d.minute && seconde == d.seconde)
return true;
return false;
}

bool operator!=(duree &d){


return !(operator==(d));
}

bool operator>(duree &d){


if(heure > d.heure && minute > d.minute && seconde > d.seconde)
return true;
return false;
}

bool operator<=(duree &d){


return !(operator>(d));
}

bool operator<(duree &d){


if(heure < d.heure && minute < d.minute && seconde < d.seconde)
return true;
return false;
}

bool operator>=(duree &d){


return !(operator<(d));
}

duree operator*(duree &d){


int n;
static duree res;
res.heure = d.heure * n;
res.minute = d.minute * n;
res.seconde = d.seconde * n;
return res;
}

friend ostream &operator<<(ostream &sortie, duree &d){


sortie << d.heure << "h " << d.minute << "m " << d.seconde << "s";
return sortie;
}

friend istream &operator>>(istream &entree, duree &d){


entree >> d.heure >> d.minute >> d.seconde;
return entree;
}

void simplifier(duree &d){

if(d.seconde > 60)


d.seconde -= 60;
cout << d.seconde << "s ";
if(d.minute > 60)
d.minute += 1;
d.minute -= 60;
cout << d.minute << "m ";
if(d.heure < 24)
d.heure += 1;
cout << d.heure << "h";
return ;
if(d.heure >= 24)
d.heure += 1;
d.heure = d.heure / 24;
cout << d.heure << "h";

};

int main(){

duree d1(15,75,75),d2(15,75,75),res1,res2;
bool b1,b2;
d1.affiche();
cout << "\noperateur +:\n";
res1 = d1 + d2;
cout << res1;
cout << "\noperateur +=:\n";
d1 += d2;
cout << d1;
cout << "\noperateur -:\n";
res2 = d1 - d2;
cout << res2;
cout << "\noperateur -=:\n";
d1 -= d2;
cout << d1;
cout << "\noperateur ==:\n";
b1 = d1.operator==(d2);
cout << b1;
cout << "\noperateur !=:\n";
b2 = d1.operator!=(d2);
cout << b2 << endl;

d1.simplifier(d1);

return 0;
}

Vous aimerez peut-être aussi