a6177738的专栏

#include <iostream>using namespace std;class CFraction{private:int nume; // 分子int deno; //分母public://构造函数及运算符重载的函数声明CFraction(int n=0,int d=0):nume(n),deno(d) {}CFraction operator+();CFraction operator-();CFraction operator~();friend CFraction operator+(const CFraction &a,const CFraction &b);friend CFraction operator-(const CFraction &a,const CFraction &b);friend CFraction operator*(const CFraction &a,const CFraction &b);friend CFraction operator/(const CFraction &a,const CFraction &b);friend bool operator>(const CFraction &a,const CFraction &b);friend bool operator<(const CFraction &a,const CFraction &b);friend bool operator==(const CFraction &a,const CFraction &b);friend bool operator!=(const CFraction &a,const CFraction &b);friend bool operator>=(const CFraction &a,const CFraction &b);friend bool operator<=(const CFraction &a,const CFraction &b);friend CFraction operator+(const CFraction &b,int i);friend CFraction operator-(const CFraction &b,int i);friend CFraction operator*(const CFraction &b,int i);friend CFraction operator/(const CFraction &b,int i);friend ostream& operator<<(ostream &output,CFraction &c);void display();};int simple(int,int);CFraction CFraction::operator+(){if(nume<0 && deno>0)nume=-nume;else if(nume>0 && deno<0)deno=-deno;return *this;}CFraction CFraction::operator-(){if((nume>0 && deno>0) || (nume<0 && deno<0))nume=-nume;return *this;}CFraction CFraction::operator~(){int i;i=nume;nume=deno;deno=i;return *this;}CFraction operator+(const CFraction &a,const CFraction &b){CFraction c;c.deno=a.deno*b.deno;c.nume=a.nume*b.deno+a.deno*b.nume;int x;x=simple(c.nume,c.deno);c.nume/=x;c.deno/=x;return c;}CFraction operator-(const CFraction &a,const CFraction &b){CFraction c;c.deno=a.deno*b.deno;c.nume=a.nume*b.deno-a.deno*b.nume;int x;x=simple(c.nume,c.deno);c.nume/=x;c.deno/=x;return c;}CFraction operator*(const CFraction &a,const CFraction &b){CFraction c;c.deno=a.deno*b.deno;c.nume=a.nume*b.nume;int x;x=simple(c.nume,c.deno);c.nume/=x;c.deno/=x;return c;}CFraction operator/(const CFraction &a,const CFraction &b){CFraction c;c.deno=a.deno*b.nume;c.nume=a.nume*b.deno;int x;x=simple(c.nume,c.deno);c.nume/=x;c.deno/=x;return c;}bool operator>(const CFraction &a,const CFraction &b){if(a.nume*b.deno>a.deno*b.nume)return true;elsereturn false;}bool operator<(const CFraction &a,const CFraction &b){if(a.nume*b.deno<a.deno*b.nume)return true;elsereturn false;}bool operator==(const CFraction &a,const CFraction &b){if(a.nume*b.deno==a.deno*b.nume)return true;elsereturn false;}bool operator!=(const CFraction &a,const CFraction &b){if(a.nume*b.deno!=a.deno*b.nume)return true;elsereturn false;}bool operator>=(const CFraction &a,const CFraction &b){if(a<b)return false;elsereturn true;}bool operator<=(const CFraction &a,const CFraction &b){if(a>b)return false;elsereturn true;}CFraction operator+(const CFraction &a,int i){CFraction c;c.deno=a.deno;c.nume=a.nume+i*a.deno;return c;}CFraction operator-(const CFraction &a,int i){CFraction c;c.deno=a.deno;c.nume=a.nume-i*a.deno;return c;}CFraction operator*(const CFraction &a,int i){CFraction c;c.deno=a.deno;c.nume=a.nume*i;int x;x=simple(c.nume,c.deno);c.nume/=x;c.deno/=x;return c;}CFraction operator/(const CFraction &a,int i){CFraction c;c.deno=a.deno*i;c.nume=a.nume;int x;x=simple(c.nume,c.deno);c.nume/=x;c.deno/=x;return c;}ostream& operator<<(ostream &output,CFraction &c){if(c.nume%c.deno==0)output<<c.nume;elseoutput<<c.nume<<"/"<<c.deno;return output;}int simple(int n,int d){int r;if(n<d){r=n;n=d;d=r;}while(r=n%d){n=d;d=r;}return n;}void CFraction::display(){if(nume%deno==0){cout<<"分子/分母:"<<nume<<"/"<<deno<<"="<<nume<<endl;}elsecout<<"分子/分母:"<<nume<<"/"<<deno<<endl;}int main(){CFraction a(1,3),b(8,7),c(2,5),d(5,8),e(7,6),f(3,5),g(3,8);int i=2;c=a+b;c.display();c=a-i;c.display();c=a-b;c.display();c=a*i;c.display();c=a*b;c.display();c=a/i;c.display();c=a/b;c.display();c=-a;cout<<"取反a="<<c<<endl;c=+a;cout<<"取正a="<<c<<endl;c=~a;cout<<"取倒数a="<<c<<endl;if(a>d)cout<<"判断a是否大于b:"<<a<<">"<<d<<endl;else if(a==d)cout<<"判断a是否等于b:"<<a<<"="<<d<<endl;if(a<e)cout<<"判断a是否小于e:"<<a<<"<"<<e<<endl;if(a>=f)cout<<"判断a是否大于或等于f:"<<a<<">="<<f<<endl;if(a<=g)cout<<"判断a是否小于或等于g:"<<a<<"<="<<g<<endl;return 0;}    写的有点乱,见谅,,见谅。代码多了有点头晕。

任何的限制,都是从自己的内心开始的。

a6177738的专栏

相关文章:

你感兴趣的文章:

标签云: