第8周实验报告4

来源:互联网 发布:手机记录仪软件 编辑:程序博客网 时间:2024/05/16 16:59
/* (程序头部注释开始)   * 程序的版权和版本声明部分   * Copyright (c) 2011, 烟台大学计算机学院学生    * All rights reserved.   * 文件名称:分数类                               * 作    者:张旭                                 * 完成日期:  2012   年   4   月    16 日   * 版 本 号:略              * 对任务及求解方法的描述部分   * 输入描述:略    * 问题描述:略    * 程序输出:略    * 程序头部的注释结束   */  #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();friend CFraction operator+(int i, const CFraction &c);  //新加方法friend CFraction operator-(int i, const CFraction &c);  //新加方法friend CFraction operator*(int i, const CFraction &c);  //新加方法friend CFraction operator/(int i, const CFraction &c);  //新加方法friend CFraction operator+(const CFraction &c, int i);  //新加方法friend CFraction operator-(const CFraction &c, int i);  //新加方法friend CFraction operator*(const CFraction &c, int i);  //新加方法friend CFraction operator/(const CFraction &c, int i);  //新加方法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);};// 分数化简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+(){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;}}//新加方法:CFraction operator+ (const CFraction &c, int i){CFraction t;t.nume = c.nume  + c.deno * i;t.deno = c.deno;t.simplify();return t;}CFraction operator- (const CFraction &c, int i){CFraction t;t.nume = c.nume - i * c.deno;t.deno = c.deno;t.simplify();return t;}CFraction operator* (const CFraction &c, int i){CFraction t;t.nume = c.nume * i;t.deno = c.deno;t.simplify();return t;}CFraction operator/(const CFraction &c, int i){CFraction t;t.deno *= i;t.nume = c.nume;t.simplify();return t;}CFraction operator+ (int i, const CFraction &c){CFraction t;t.nume = c.nume  + c.deno * i;t.deno = c.deno;t.simplify();return t;}CFraction operator- (int i, const CFraction &c){CFraction t;t.nume = c.nume - i * c.deno;t.deno = c.deno;t.simplify();return t;}CFraction operator* (int i, const CFraction &c){CFraction t;t.nume = c.nume * i;t.deno = c.deno;t.simplify();return t;}CFraction operator/(int i, const CFraction &c){CFraction t;t.deno *= i;t.nume = c.nume;t.simplify();return t;}int main(){CFraction x(1,3),y(-5,10),s;x.display();if (x>y) cout<<"大于"<<endl;if (x<y) cout<<"小于"<<endl;if (x==y) cout<<"等于"<<endl;y.display();cout<<endl;cout << "新加功能:" << endl;cout << "x + 27 = ";s = x + 27;s.display();cout << "27 + x = " ;s = 27 + x;s.display();cout << "x - 27 = " ;s = x - 27;s.display();cout << "27 - x = " ;s = 27 - x;s.display();cout << "x / 27 = " ;s = x / 27;s.display();cout << "27 / x = " ;s = 27 / x;s.display();cout << "x * 27 = " ;s = x * 27;s.display();cout << "27 * x = " ;s = 27 * x;s.display();system("pause");return 0;}