2014第八週專案三--分數類的運算子過載
阿新 • • 發佈:2019-01-26
/* *程式的版權和版本宣告部分: *Copyright(c)2014,煙臺大學計算機學院學生 *All rights reserved. *檔名稱: *作者:劉曉曉 *完成日期:2014年 04月15號 *版本號:v1.0 *對任務及求解方法的描述部分: *輸入描述: 無 *問題描述: *程式輸出:無 *問題分析: *演算法設計: */ #include <iostream> using namespace std; int gcd(int n,int m); class CFraction { private: int nume; // 分子 int deno; // 分母 public: CFraction (int a=0,int b=0) { nume=a; deno=b; } CFraction operator+(CFraction &c); CFraction operator-(CFraction &c); CFraction operator*(CFraction &c); CFraction operator/(CFraction &c); bool operator>(CFraction &c); bool operator<(CFraction &c); bool operator >=(CFraction &c); bool operator<=(CFraction &c); bool operator ==(CFraction &c); void simplay(); void display(); }; CFraction CFraction::operator+(CFraction &c) { CFraction t; t.nume=nume*c.deno+deno*c.nume; t.deno=deno*c.deno; return t; } CFraction CFraction::operator-(CFraction &c) { CFraction t; t.nume=nume*c.deno-deno*c.nume; t.deno=deno*c.deno; return t; } CFraction CFraction::operator*(CFraction &c) { CFraction t; t.nume=nume*c.nume; t.deno=deno*c.deno; return t; } CFraction CFraction::operator/(CFraction &c) { CFraction t; t.nume=nume*c.deno; t.deno=deno*c.nume; return t; } bool CFraction ::operator >(CFraction &c) { if (nume*c.deno>deno*c.nume) return true; return false ; } bool CFraction ::operator <(CFraction &c) { if (nume*c.deno<deno*c.nume) return true; return false ; } bool CFraction ::operator >=(CFraction &c) { if (!(nume*c.deno<deno*c.nume)) return true; return false ; } bool CFraction ::operator <=(CFraction &c) { if (!(nume*c.deno>deno*c.nume)) return true; return false ; } bool CFraction ::operator ==(CFraction &c) { if (nume==c.nume&&deno==c.deno) return true; return false ; } void CFraction::display() { cout<< nume<<"/"<<deno<<endl; } void CFraction::simplay() { int n=gcd(deno, nume); deno/=n; // 化簡 nume/=n; } // 求m,n的最大公約數 int gcd(int m, int n) //這個函式可以定義為類的成員函式,也可以為一般函式 { int r; if (m<n) { r=m; m=n; n=r; } while(r=m%n) // 求m,n的最大公約數 { m=n; n=r; } return n; } int main() { CFraction t1(2,9),t2(4,16),t3; cout<<"t1="; t1.display(); cout<<"化簡後t1="; t1.simplay(); t1.display(); cout<<"t2="; t2.display(); cout<<"化簡後t2="; t2.simplay(); t2.display(); cout<<"比較兩個數的大小:"<<endl; if (t1>t2)cout<<"t1>t2"<<endl; if (t1<=t2)cout<<"t1<=t2"<<endl; if (t1<t2)cout<<"t1<t2"<<endl; if (t1==t2)cout<<"t1=t2"<<endl; t3=t1+t2; t3.simplay(); cout<<"t1+t2="; t3.display(); t3=t2-t1; t3.simplay(); cout<<"t2-t1="; t3.display(); t3=t2*t1; cout<<"t1*t2="; t3.simplay(); t3.display(); t3=t1/t2; cout<<"t1/t2="; t3.simplay(); t3.display(); return 0; }
一點一點增加函式