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;
}