第九周实验报告3

来源:互联网 发布:数据分析前景 知乎 编辑:程序博客网 时间:2024/05/21 08:42
/* (程序头部注释开始)* 程序的版权和版本声明部分* Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved.* 文件名称:                              * 作    者:王引琳                              * 完成日期:   2012      年   4   月    14    日* 版 本 号:          * 对任务及求解方法的描述部分* 输入描述: * 问题描述: * 程序输出: * 程序头部的注释结束*/#include <iostream>using namespace std;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+(const CFraction &c);//分数相加CFraction operator-(const CFraction &c);//分数相减CFraction operator*(const CFraction &c);//分数相乘CFraction operator/(const CFraction &c);//分数相除CFraction operator+();//取正运算CFraction operator-();//取反运算friend istream& operator >>(istream&,CFraction&);//运算符>>重载为友元函数  friend ostream& operator <<(ostream&,CFraction&);//运算符<<重载为友元函数 //比较运算bool operator>(const CFraction &c);      bool operator<(const CFraction &c);      bool operator==(const CFraction &c);      bool operator!=(const CFraction &c);      bool operator>=(const CFraction &c);      bool operator<=(const CFraction &c);  };CFraction::CFraction(int nu,int de){nume=nu;deno=de;}void CFraction::Set(int nu,int de){nume=nu;deno=de;}   void CFraction::Simplify(){int a,b,c,p;if(nume<=deno){p=nume;}elsep=deno;for(a=2;a<=p;a++){b=nume%a;c=deno%a;if(b==0&&c==0){do{nume=nume/a;deno=deno/a;b=nume%a;        c=deno%a;}while(b==0&&c==0);}}}CFraction CFraction::operator+(const CFraction &c)//分数相加{CFraction t;t.nume=nume*c.deno+c.nume*deno ;t.deno=deno*c.deno;t.Simplify();return t;}CFraction CFraction::operator-(const CFraction &c)//分数相减{CFraction t;t.nume=nume*c.deno-c.nume*deno;t.deno=deno*c.deno;t.Simplify();return t;}CFraction CFraction::operator*(const CFraction &c)//分数相乘{CFraction t;t.nume=nume*c.nume;t.deno=deno*c.deno;t.Simplify();return t;}CFraction CFraction::operator/(const CFraction &c)//分数相除{CFraction t;t.nume=nume*c.deno;t.deno=deno*c.nume;t.Simplify();return t;}CFraction CFraction::operator+()//取正运算{return *this;}CFraction CFraction::operator-()//取反运算{CFraction t;t.nume=-nume;t.deno=-deno;return t;}//比较运算bool CFraction::operator>(const CFraction &c){CFraction t1,t2;t1.nume=nume*c.deno;t2.nume=deno*c.nume;if(t1.nume >t2.nume )return true;elsereturn false;}bool CFraction::operator<(const CFraction &c){CFraction t1,t2;t1.nume=nume*c.deno;t2.nume=deno*c.nume;if(t1.nume <t2.nume )return true;elsereturn false;}bool CFraction::operator==(const CFraction &c) {CFraction t1,t2;t1.nume=nume*c.deno;t2.nume=deno*c.nume;if(t1.nume ==t2.nume )return true;elsereturn false;}bool CFraction::operator!=(const CFraction &c) {CFraction t1,t2;t1.nume=nume*c.deno;t2.nume=deno*c.nume;if(t1.nume ==t2.nume )return false;elsereturn true;}bool CFraction::operator>=(const CFraction &c){CFraction t1,t2;t1.nume=nume*c.deno;t2.nume=deno*c.nume;if(t1.nume <t2.nume )return false;elsereturn true;}bool CFraction::operator<=(const CFraction &c) {CFraction t1,t2;t1.nume=nume*c.deno;t2.nume=deno*c.nume;if(t1.nume >t2.nume )return false;elsereturn true;}istream& operator >>(istream& input,CFraction& c)//定义运算符>>重载函数{cout<<"请输入分子和分母:";input>>c.nume>>c.deno;return input;}ostream& operator <<(ostream& output,CFraction& c)//定义运算符<<重载函数{output<<c.nume<<"/"<<c.deno<<endl;return output;}void main(){CFraction c1,c2,c3;cin>>c1>>c2;  cout<<"c1="<<c1<<endl;  cout<<"c2="<<c2<<endl;  c3=c1+c2;  cout<<"c1+c2="<<c3;  c3=c1-c2;  cout<<"c1-c2="<<c3;  c3=c1*c2;  cout<<"c1*c2="<<c3;  c3=c1/c2;  cout<<"c1/c2="<<c3;cout<<"两分数比较得:"<<endl;     if (c1 > c2) cout << "c1 > c2" << endl;      if (c1 < c2) cout << "c1 < c2" << endl;      if (c1 == c2) cout << "c1 = c2" << endl;       if (c1 != c2) cout << "c1 ≠ c2" << endl;      if (c1 >= c2) cout << "c1 ≥ c2" << endl;      if (c1 <= c2) cout << "c1 ≤ c2" << endl;      cout<<endl; system("pause");}  

上机感言:程序基本上不用动啊