文章结束给大家来个序程员笑话:[M]
/*
* Copyright (c) 2013, 烟台大学计算机学院
* All rights reserved.
* 文件名称:test.cpp
* 作者:邱学伟
* 成完日期:2013 年 5 月 4 日
* 版本号:v1.0
* 输入描述:无
* 问题描述:分数和整型数的运算符重载“+ - * /等”
* 序程出输:
* 问题析分:
* 法算计设:略
*/
#include <iostream>
#include <cmath>
using namespace std;
class CFraction
{private:int nume;//子分int deno;//分母public:CFraction(int nu=0,int de=1):nume(nu),deno(de){}//构造函数定义,de=1分母不能为0!void simplify();//化简分数void display();//展示分数friend CFraction operator+(const CFraction &c1,const CFraction &c2);//分数之间的加减乘除,友元函数现实friend CFraction operator-(const CFraction &c1,const CFraction &c2);friend CFraction operator*(const CFraction &c1,const CFraction &c2);friend CFraction operator/(const CFraction &c1,const CFraction &c2);friend CFraction operator+(const CFraction &c,const int i);//分数和整数的加减乘除friend CFraction operator+(const int i,const CFraction &c);friend CFraction operator-(const CFraction &c,const int i);friend CFraction operator-(const int i,const CFraction &c);friend CFraction operator*(const CFraction &c,const int i);friend CFraction operator*(const int i,const CFraction &c);friend CFraction operator/(const CFraction &c,const int i);friend CFraction operator/(const int i,const CFraction &c);friend bool operator==(const CFraction &c1,const CFraction &c2);friend bool operator!=(const CFraction &c1,const CFraction &c2);friend bool operator<=(const CFraction &c1,const CFraction &c2);friend bool operator>=(const CFraction &c1,const CFraction &c2);friend bool operator>(const CFraction &c1,const CFraction &c2); //比拟小大friend bool operator<(const CFraction &c1,const CFraction &c2);CFraction operator+();//取正CFraction operator-();//取反
};//分数的化简
void CFraction::simplify()
{int d,n,r;d=fabs(deno);//分母 “fabs()” 的作用求浮点数x的绝对值。n=fabs(nume);//子分if(d<n){r=d;d=n;n=r;}while(r=d%n){d=n;n=r;}deno=deno/n;nume=nume/n;//将分母转化成正数if(deno<0){deno=-deno;nume=-nume;}
}
//展示分数
void CFraction::display()
{cout<<"("<<nume<<"/"<<deno<<")"<<endl;
}//分数相加
CFraction operator+(const CFraction &c1,const CFraction &c2)
{CFraction c;c.nume=c1.nume*c2.deno+c2.nume*c1.deno;c.deno=c1.deno*c2.deno;c.simplify();return c;
}
//分数相减
CFraction operator-(const CFraction &c1,const CFraction &c2)
{CFraction c;c.nume=c1.nume*c2.deno-c2.nume*c1.deno;c.deno=c1.deno*c2.deno;c.simplify();return c;
}
//分数相乘CFraction operator*(const CFraction &c1,const CFraction &c2)
{CFraction c;c.nume=c1.nume*c2.nume;c.deno=c1.deno*c2.deno;c.simplify();return c;
}//分数相除
CFraction operator/(const CFraction &c1,const CFraction &c2)
{CFraction c;c.nume=c1.nume*c2.deno;c.deno=c1.deno*c2.nume;c.simplify();return c;
}//分数和整数的加法
CFraction operator+(const CFraction &c,const int i)
{CFraction c0;c0.nume=c.nume+i*c.deno;c0.deno=c.deno;c0.simplify();return c0;
}
CFraction operator+(const int i,const CFraction &c)
{CFraction c0;c0.nume=c.nume+i*c.deno;c0.deno=c.deno;c0.simplify();return c0;
}
//分数和整数的减法
CFraction operator-(const CFraction &c,const int i)
{CFraction c0;c0.nume=c.nume-i*c.deno;c0.deno=c.deno;c0.simplify();return c0;
}
CFraction operator-(const int i,const CFraction &c)
{CFraction c0;c0.nume=i*c.deno-c.nume;c0.deno=c.deno;c0.simplify();return c0;
}
//分数和整数的乘法
CFraction operator*(const CFraction &c,const int i)
{CFraction c0;c0.nume=c.nume*i;c0.deno=c.deno;c0.simplify();return c0;
}
CFraction operator*(const int i,const CFraction &c)
{CFraction c0;c0.nume=c.nume*i;c0.deno=c.deno;c0.simplify();return c0;
}
//分数和整数的除法
CFraction operator/(const CFraction &c,const int i)
{CFraction c0;c0.nume=c.nume;c0.deno=c.deno*i;c0.simplify();return c0;
}
CFraction operator/(const int i,const CFraction &c)
{CFraction c0;c0.nume=c.deno*i;c0.deno=c.nume;c0.simplify();return c0;
}
//分数取正
CFraction CFraction::operator +()
{return *this;
}//分数取负号
CFraction CFraction::operator -()
{CFraction c;c.deno=-deno;c.nume=-nume;return c;
}//比拟两个分数的小大
bool operator>(const CFraction &c1,const CFraction &c2)
{double t1,t2;t1=c1.nume*c2.deno;t2=c2.nume*c1.deno;if(t1>t2)return true;elsereturn false;
}
bool operator<(const CFraction &c1,const CFraction &c2)
{double t1,t2;t1=c1.nume*c2.deno;t2=c2.nume*c1.deno;if(t1<t2)return true;elsereturn false;
}
bool operator >=(const CFraction &c1,const CFraction &c2)
{double t1,t2;t1=c1.nume*c2.deno;t2=c2.nume*c1.deno;if(t1<t2)return false;elsereturn true;
}
bool operator <=(const CFraction &c1,const CFraction &c2)
{double t1,t2;t1=c1.nume*c2.deno;t2=c2.nume*c1.deno;if(t1>t2)return false;elsereturn true;
}
bool operator ==(const CFraction &c1,const CFraction &c2)
{if(c1!=c2)return false;elsereturn true;
}
bool operator!=(const CFraction &c1,const CFraction &c2)
{if(c1>c2 || c1<c2 )return true;elsereturn false;
}
int main()
{CFraction x(1,3),y(-5,10),s;cout<<"分数x=1/3 y=-5/10"<<endl;s=+x+y;cout<<"+x+y=";s.display();s=x-y;cout<<"x-y=";s.display();s=x*y;cout<<"x*y=";s.display();s=x/y;cout<<"x/y=";s.display();s=-x+y;cout<<"-x+y=";s.display();x.display();if (x>y) cout<<"大于"<<endl;if (x<y) cout<<"小于"<<endl;if (x==y) cout<<"即是"<<endl;y.display();cout<<endl;CFraction c1(5,3),c2;//以下提议在调试环境中成完测试,c2=c1+5;c2=5+c1;c2=c1-5;c2=5-c1;c2=c1*5;c2=5*c1;c2=c1/5;c2=5/c1;bool b;b=(c1>2);b=(2>c1);return 0;
}
有一首诗最为动人,那就是青春;有一段人生最美丽,那就是青春;有一道风景最为亮丽,那就是青春。青春,不要说已疲惫,也许你的幻想曾被现实无情毁灭,也许你的追求毫无结果,但你应该相信,没有寒风的洗礼,哪来万紫千红的春天,没有心的耕耘,哪有累累硕果?
文章结束给大家分享下程序员的一些笑话语录: 程序员打油诗
写字楼里写字间,写字间里程序员;
程序人员写程序,又拿程序换酒钱。
酒醒只在网上坐,酒醉还来网下眠;
酒醉酒醒日复日,网上网下年复年。
但愿老死电脑间,不愿鞠躬老板前;
奔驰宝马贵者趣,公交自行程序员。
别人笑我忒疯癫,我笑自己命太贱;
不见满街漂亮妹,哪个归得程序员。