项目3扩展(选做)-分数类和整型数的四则运算
2014-04-15 22:35
411 查看
/* *Corpyright (c)2013,烟台大学计算机学院 *All right reseved. *作者:张梦佳 *完成日期:2014年4月15日 *版本号:v1.0 *输入描述: *问题描述:实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简)、比较(6种关系)的运算。在其基础上拓展。分数类中的对象可以和整型数进行四则运算,且运算符合交换律! *程序输出: *问题分析: *算法设计: */ #include <iostream> #include <cmath> #include <cstdlib> using namespace std; class CFraction { private: int nume; // 分子 int deno; // 分母 public: CFraction(int a=0,int b=0) { nume=a; deno=b; } friend CFraction operator+(int s,const CFraction &c); friend CFraction operator-(int s,const CFraction &c); friend CFraction operator*(int s,const CFraction &c); friend CFraction operator/(int s,const CFraction &c); CFraction operator+(int s); CFraction operator-(int s); CFraction operator*(int s); CFraction operator/(int s); CFraction operator+(CFraction &c); CFraction operator-(CFraction &c); CFraction operator*(CFraction &c); CFraction operator/(CFraction &c); bool operator>(CFraction &c); bool operator<=(CFraction &c); void simplify(); //构造函数及运算符重载的函数声明 }; //重载函数的实现及用于测试的main()函数 CFraction operator+(int s,const CFraction &c) { CFraction a; a.nume=s*c.deno+c.nume; a.deno=c.deno; return a; } CFraction operator-(int s,const CFraction &c) { CFraction a; a.nume=s*c.deno-c.nume; a.deno=c.deno; return a; } CFraction operator*(int s,const CFraction &c) { CFraction a; a.nume=s*c.nume; a.deno=c.deno; return a; } CFraction operator/(int s,const CFraction &c) { CFraction a; a.nume=c.deno*s; a.deno=c.nume; return a; } CFraction CFraction::operator+(int s) { CFraction c; c.nume=s*deno+nume; c.deno=deno; return c; } CFraction CFraction::operator-(int s) { CFraction c; c.nume=nume-s*deno; c.deno=deno; return c; } CFraction CFraction::operator*(int s) { CFraction c; c.nume=s*nume; c.deno=deno; return c; } CFraction CFraction::operator/(int s) { CFraction c; c.nume=nume; c.deno=deno*s; return c; } bool CFraction::operator>(CFraction &c) { if(nume*c.deno>c.nume*nume) return false; else return true; } bool CFraction::operator<=(CFraction &c) { if(!(nume*c.deno>c.nume*nume)) return false; else return true; } CFraction CFraction::operator+(CFraction &c) { CFraction s; s.nume=nume*c.deno+c.nume*deno; s.deno=deno*c.deno; return s; } CFraction CFraction::operator-(CFraction &c) { CFraction s; s.nume=nume*c.deno-c.nume*deno; s.deno=deno*c.deno; return s; } CFraction CFraction::operator*(CFraction &c) { CFraction s; s.nume=nume*c.nume; s.deno=deno*c.deno; return s; } CFraction CFraction::operator/(CFraction &c) { CFraction s; s.nume=nume*c.deno; s.deno=deno*c.nume; return s; } void CFraction::simplify() { int s,q; if(nume>deno) { for(int i=abs(deno);i!=0;i--) { s=deno%i; q=nume%i; if(s==0&&q==0) { cout<<"("<<nume/i<<"/"<<deno/i<<")"<<endl; break; } } } else { if(nume<deno) { for(int i=abs(nume);i>0;i--) { s=deno%i; q=nume%i; if(s==0&&q==0) { cout<<"("<<nume/i<<"/"<<deno/i<<")"<<endl; break; } } } } } int main() { CFraction t1(3,6),t2(2,3),t3; int d=5; t1.simplify(); t2.simplify(); cout<<"t1+t2="; t3=t1+t2; t3.simplify(); cout<<"t1*t2="; t3=t1*t2; t3.simplify(); cout<<"t1/t2="; t3=t1/t2; t3.simplify(); cout<<"t1-t2="; t3=t1-t2; t3.simplify(); cout<<"t1-5="; t3=t1-d; t3.simplify(); cout<<"t1*5="; t3=t1*d; t3.simplify(); cout<<"t1/5="; t3=t1/d; t3.simplify(); cout<<"t1+5="; t3=t1+d; t3.simplify(); cout<<"5+t2="; t3=d+t2; t3.simplify(); cout<<"5-t2="; t3=d-t2; t3.simplify(); cout<<"5*t2="; t3=d*t2; t3.simplify(); cout<<"5/t2="; t3=d/t2; t3.simplify(); if(t1<=t2) cout<<"没有错误!调试完毕!"<<endl; else cout<<"哎呀!有错误!"<<endl; return 0; }
感悟
贺老师,你写的怎么这么简练啊!
相关文章推荐
- 第八周 项目四:分数类和整型数的四则运算
- C++第8周项目4 -分数类和整型数的四则运算
- 项目4-分数类和整型数的四则运算
- 在(1)的基础上,实现分数类中的对象和整型数的四则运算。分数类中的对象可以和整型数进行四则运算,且运算符合交换律。例如:CFraction a(1,3),b; int i=2; 可以完成b=a+i;。
- 第八周项目一 3扩展四则运算功能
- 第八周项目四----分数类和整形术的四则运算
- 第八周项目3——分数类中的运算符重载(四则运算)
- 实现分数类中的对象和整型数的四则运算。分数类中的对象可以和整型数进行四则运算,且运算符合交换律。例如:CFraction a(1,3),b; int i=2; 可以完成b=a+i;。同样,可以完成i+
- 第八周项目三 分数类中的运算符重载-(2)分数与分数、分数与整数的四则运算
- 四则运算项目git统计
- 结对编程项目-四则运算
- 结对项目之四则运算(终了)
- 结对项目——四则运算
- C++第8周项目1扩展 - 运算符重载进行虚数运算
- C语言写的秒速计算四则混合运算项目
- 第7周-项目3-分数类中的运算符重载-拓展分数的加减乘除(分数与整型 )
- 20162322 朱娅霖 结对编程项目-四则运算 第一周阶段性总结
- 20162325 结对编程项目-四则运算 整体总结
- YTU-OJ-分数类的四则运算【C++】
- 个人项目终极博客——四则运算题目生成程序分析