第9周实验报告3

来源:互联网 发布:免费手机文档编辑软件 编辑:程序博客网 时间:2024/05/24 00:22
/* (程序头部注释开始)   * 程序的版权和版本声明部分   * Copyright (c) 2011, 烟台大学计算机学院学生    * All rights reserved.   * 文件名称:分数类改                               * 作    者:张旭                                 * 完成日期:  2012   年   4   月    19  日   * 版 本 号:略              * 对任务及求解方法的描述部分   * 输入描述:略    * 问题描述:略    * 程序输出:略    * 程序头部的注释结束   */  #include <iostream>using namespace std;class CFraction{private:int nume;  // 分子int deno;  // 分母public:CFraction(int nu=0,int de=1):nume(nu),deno(de){}void simplify();void display();CFraction operator+(const CFraction &c);  //两个分数相加,结果要化简CFraction operator-(const CFraction &c);  //两个分数相减,结果要化简CFraction operator*(const CFraction &c);  //两个分数相乘,结果要化简CFraction operator/(const CFraction &c);  //两个分数相除,结果要化简CFraction operator+();  //取正一目运算CFraction operator-();  //取反一目运算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);friend istream &operator>>(istream &input, CFraction &d);    friend ostream &operator<<(ostream &output, CFraction &d);};// 分数化简void CFraction::simplify(){int m, n, r;m=abs(deno);n=abs(nume);while(r=m%n) {m=n;n=r;}deno /= n;    nume /= n;if (deno < 0)  {deno =- deno;nume =- nume;}}void CFraction::display(){cout << "(" << nume << "/" << deno << ")" << endl;}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;if (!c.nume){return *this;}t.nume = nume * c.deno;t.deno = deno * c.nume;t.simplify();return t;}CFraction CFraction:: operator+(){return *this;}CFraction CFraction:: operator-(){CFraction x;x.nume = -nume;x.deno = deno;return x;     }bool CFraction::operator>(const CFraction &c){int n, a, d;n = nume * c.deno;a = c.nume * deno; d = deno * c.deno;if (n > a && d > 0 || n < a && d < 0){return true;}return false;}bool CFraction::operator<(const CFraction &c){int n, a, d;n = nume * c.deno;  a = c.nume * deno;d = deno * c.deno;if ((n - a) * d < 0){return true;}else{return false;}}bool CFraction::operator==(const CFraction &c){if (*this!=c){return false;}else{return true;}}bool CFraction::operator!=(const CFraction &c){if (*this > c || *this < c){return true;}else{return false;}}bool CFraction::operator>=(const CFraction &c){if (*this<c) {return false;}else{return true;}}bool CFraction::operator<=(const CFraction &c){if (*this > c) {return false;}else{return true;}}//改函数istream &operator>>(istream &input, CFraction &d)  {      char c;    input >> d.nume;        cin >> c;    input >> d.deno;        return input;  }    ostream &operator << (ostream &output, CFraction &d)  {      char c = '/';        output << d.nume << c << d.deno;        return output;  }  int main(){CFraction x(1,3),y(-5,10),s;cin >> s;cout << x << endl << y << endl << s << endl;system("pause");return 0;}

原创粉丝点击