第九周实验报告任务三
2012-04-16 19:13
435 查看
/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved.* 文件名称:分数 * 作者:郭岩岩 * 完成日期:2012年4月10日 * 版本号:vc.1 * 对任务及求解方法的描述部分 * 输入描述: * 问题描述: * 程序输出: *程序头部的注释结束 */ #include<iostream> using namespace std; int gcd(int,int); class CFraction { private: int nume; // 分子 int deno; // 分母 public: CFraction(int nu=0,int de=1); //构造函数,初始化用 void Set(int nu=0,int de=1); //置值,改变值时用 void Simplify(); //化简(使分子分母没有公因子) CFraction operator+(CFraction &c); CFraction operator-(CFraction &c); CFraction operator*(CFraction &c); CFraction operator/(CFraction &c); CFraction operator-(); bool operator>(CFraction &c); bool operator<(CFraction &c); bool operator==(CFraction &c); bool operator!=(CFraction &c); bool operator>=(CFraction &c); bool operator<=(CFraction &c); friend istream& operator >> (istream& input,CFraction &c); friend ostream& operator << (ostream& output,CFraction &c); }; istream& operator >> (istream& input,CFraction &c) { char a; cout<<"请输入一个分数,例如:3/4:"<<endl; input>>c.nume ; input>>a; input>>c.deno; while(a!='/') { cout<<"输入格式不对,请重新输入!"; } while(c.deno ==0) { cout<<"分数的分母不能为零,请重新输入!"; } return input; } ostream& operator << (ostream& output,CFraction &c) { output<<c.nume <<"/"<<c.deno ; return output; } CFraction::CFraction(int nu,int de) { if(de!=0) { nume=nu; deno=de; } else { cerr<<"初始化中发生错误,程序退出\n"; exit(0); } } void CFraction::Set(int nu,int de) { if(deno!=0) { nume=nu; deno=de; } } //化简 void CFraction::Simplify() { int n=gcd(nume,deno); nume=nume/n; deno=deno/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; } CFraction CFraction::operator+(CFraction &c) { CFraction c2; c2.nume =nume*c.deno +c.nume*deno ; c2.deno =deno*c.deno ; c2.Simplify(); return c2; } CFraction CFraction::operator-(CFraction &c) { CFraction c2; c2.nume =nume*c.deno -c.nume*deno ; c2.deno =deno*c.deno ; c2.Simplify (); return c2; } CFraction CFraction::operator*(CFraction &c) { CFraction c2; c2.nume =nume*c.nume; c2.deno =deno*c.deno ; c2.Simplify(); return c2; } CFraction CFraction::operator/(CFraction &c) { CFraction c2; c2.nume =nume*c.deno ; c2.deno =deno*c.nume ; c2.Simplify(); return c2; } CFraction CFraction::operator-() { CFraction c2; c2.nume =0-nume; c2.deno =deno ; c2.Simplify(); return c2; } bool CFraction::operator>(CFraction &c) { if((nume*c.deno -c.nume*deno)>0) { return true; } else return false; } bool CFraction::operator<(CFraction &c) { CFraction c2; if((nume*c.deno -c.nume*deno)<0) { return true; } else return false; } bool CFraction::operator==(CFraction &c) { CFraction c2; if((nume*c.deno -c.nume*deno)==0) { return true; } else return false; } bool CFraction::operator!=(CFraction &c) { CFraction c2; if((nume*c.deno -c.nume*deno)!=0) { return true; } else return false; } bool CFraction::operator>=(CFraction &c) { CFraction c2; if((nume*c.deno -c.nume*deno)>=0) { return true; } else return false; } bool CFraction::operator<=(CFraction &c) { CFraction c2; if((nume*c.deno -c.nume*deno)<=0) { return true; } else return false; } int main() { CFraction cf1,cf2,cf3; cin>>cf1; //cout<<cf1; cin>>cf2; //cout<<cf2; cf3=cf1+cf2; cout<<"cf3+cf2="; cout<<cf3<<endl; cf3=cf1-cf2; cout<<"cf3-cf2="; cout<<cf3<<endl; cf3=cf1*cf2; cout<<"cf3*cf2="; //cout<<cf3<<endl; cf3=cf1/cf2; cout<<cf3<<endl; cf3=-cf1; cout<<"cf3/cf2="; cout<<cf3<<endl; if(cf1>cf2) { cout<<"cf1>cf2"<<endl; } if(cf1>cf2) { cout<<"cf1>cf2"<<endl; } if(cf1<cf2) { cout<<"cf1<cf2"<<endl; } if(cf1==cf2) { cout<<"cf1==cf2"<<endl; } if(cf1!=cf2) { cout<<"cf1!=cf2"<<endl; } if(cf1>=cf2) { cout<<"cf1>=cf2"<<endl; } if(cf1<=cf2) { cout<<"cf1<=cf2"<<endl; } system("pause"); return 0; }
相关文章推荐
- 第九周实验报告任务1
- 第九周实验报告任务5
- 《C++第九周实验报告1-1》--------接第8周任务1,定义Complex类中的<<和>>运算符的重载,实现输入和输出
- 《C++第九周实验报告2-1》---接第8周任务2,定义Time类中的<<和>>运算符重载,实现时间的输入输出
- 《第九周实验报告任务1》
- 第九周实验报告 任务2 定义Complex类中的<<和>>运算符的重载,实现输入和输出,改造原程序中对运算结果显示方式,使程序读起来更自然。
- 第九周实验报告(任务二)【Time类中《和》运算符的重载】
- 《C++第九周实验报告3-1》----接第8周任务3,定义分数类中<<和>>运算符重载,实现分数的输入输出
- 第九周实验报告(任务五)【二维数组】
- 第九周实验报告(任务1)
- C++程序设计实验报告(五十七)---第九周任务1
- 第九周实验报告任务 1 定义Time类中的<<和>>运算符重载,实现时间的输入输出,改造原程序中对运算结果显示方式,使程序读起来更自然。
- 第九周实验报告(任务2)
- C++程序设计实验报告(五十八)---第九周任务2
- 第九周实验报告任务4
- 第九周实验报告(任务3)
- 第九周实验报告(任务5)
- C++程序设计实验报告(五十九)---第九周任务3
- 第九周实验报告任务3 定义分数类中<<和>>运算符重载,实现分数的输入输出,改造原程序中对运算结果显示方式,使程序读起来更自然。
- 第九周实验报告任务五