#include <iostream.h> #include <math.h> class operation{ float num; float deno; public: operation(float numerateur=1, float denominateur=1); friend operation operator+(operation fct1, operation fct2); friend operation operator-(operation fct1, operation fct2); friend operation operator* (operation fct1, operation fct2); friend operation operator/(operation f1, operation f2); friend operation operator~(operation f); operation operator++(int); //post operation& operator++(); //pré operator float(); friend operation operator^(operation op,unsigned &); friend operation operator^(operation op, int& ex); void affiche(); }; operation::operation (float numerateur, float denominateur){ num= numerateur; deno=denominateur; } operation operator+ (operation fct1, operation fct2){ //ressemble a constructeur par copie operation res; res.deno= fct1.deno*fct2.deno; res.num=(fct1.num*fct2.deno)+(fct2.num*fct1.deno); return res; } operation operator- (operation fct1, operation fct2){ //ressemble a constructeur par copie operation res; res.deno= fct1.deno*fct2.deno; res.num=(fct1.num*fct2.deno)-(fct2.num*fct1.deno); return res; } operation operator* (operation fct1, operation fct2){ //ressemble a constructeur par copie operation res; res.deno= fct1.deno*fct2.deno; res.num=fct1.num*fct2.num; return res; } operation operator/(operation f1, operation f2) { operation res; if(f2.num == 0) { res.num = 0; res.deno = 1; cout << "division par 0 pas possible" << endl; } else { res.deno = f1.deno * f2.num; res.num = f1.num * f2.deno; } return res; } operation operator~(operation f){ operation res; res.num=-f.num; res.deno=f.deno; return res; } operation& operation::operator ++(){ num++; deno++; return *this; } operation operation::operator ++(int){ operation tmp=*this; tmp.num++; tmp.deno++; return tmp; } operation::operator float(){ float res=num/deno; return res; } operation operator^(operation op, unsigned& ex){ operation tmp; tmp.num=pow(op.num,ex); tmp.deno=pow(op.deno,ex); return tmp; } operation operator^(operation op, int& ex){ operation tmp; tmp.num=pow(op.num,ex); tmp.deno=pow(op.deno,ex); return tmp; } void operation::affiche(){ cout<<num<<" / "<<deno<<endl; } // surcharge de l'opérateur << --> voir les exo précédents void main(){ operation a(2,3); operation b(2,5); operation c; c=a+b; c.affiche(); c=a-b; c.affiche(); c=a*b; c.affiche(); c=a/b; c.affiche(); c=~a; c.affiche(); c=a++; c.affiche(); a.affiche(); c=++a; c.affiche(); a.affiche(); float h; h=float(a); cout<<"conversion "<<h<<endl; unsigned int g=4; c=operator^(b,g); c.affiche(); int j=(-4); c=operator^(b,j); c.affiche(); }
Pages: 1 2