《C++第八周实验报告3-1》---实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简)、求反、比较(6种关系)的运算
2012-04-09 23:30
896 查看
//【任务3】实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简)、求反、比较(6种关系)的运算。 /* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称: CFractioncpp * 作 者: 计114-3 王兴锋 * 完成日期: 2012 年 4 月 9 日 * 版 本 号: V 1.0 * 对任务及求解方法的描述部分 * 输入描述:实现分数类中的运算符重载 * 问题描述:在分数类中可以完成分数的加减乘除(运算后再化简)、求反、比较(6种关系)的运算 * 程序输出:运算后的结果 * 程序头部的注释结束 */ #include <iostream> using namespace std; class CFraction { private: int nume; // 分子 int deno; // 分母 int gcd(int m, int n); public: //构造函数及运算符重载的函数声明 CFraction(int n = 1, int d = 1){if (d == 0) return;nume = n, deno = d;} friend CFraction operator + (CFraction &c1, CFraction &c2); friend CFraction operator - (CFraction &c1, CFraction &c2); friend CFraction operator * (CFraction &c1, CFraction &c2); friend CFraction operator / (CFraction &c1, CFraction &c2); friend CFraction operator - (CFraction &c); bool operator > (CFraction &c); bool operator < (CFraction &c); bool operator >= (CFraction &c); bool operator <= (CFraction &c); bool operator == (CFraction &c); bool operator != (CFraction &c); void simplify(); void display(); }; void CFraction::simplify() { int n = gcd(deno, nume); deno /= n; // 化简 nume /= n; } int CFraction::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; } void CFraction::display() { cout << nume << "/" << deno << endl; } CFraction operator + (CFraction &c1, CFraction &c2) { CFraction c; c.deno = c1.deno * c2.deno; c.nume = c1.nume*c2.deno + c2.nume*c1.deno; c.simplify(); return c; } CFraction operator - (CFraction &c1, CFraction &c2) { CFraction c; c.deno = c1.deno * c2.deno; c.nume = c1.nume*c2.deno - c2.nume*c1.deno; c.simplify(); return c; } CFraction operator * (CFraction &c1, CFraction &c2) { CFraction c; c.deno = c1.deno * c2.deno; c.nume = c1.nume * c2.nume; c.simplify(); return c; } CFraction operator / (CFraction &c1, CFraction &c2) { CFraction c; c.deno = c1.deno * c2.nume; c.nume = c1.nume * c2.deno; c.simplify(); return c; } CFraction operator - (CFraction &c) { return CFraction(-c.nume, c.deno); } bool CFraction::operator > (CFraction &c) { CFraction cf(*this / c); if (cf.nume/cf.deno > 1) return true; else return false; } bool CFraction::operator < (CFraction &c) { CFraction cf(*this / c); if (cf.nume/cf.deno < 1) return true; else return false; } bool CFraction::operator >= (CFraction &c) { CFraction cf(*this / c); if (cf.nume/cf.deno >= 1) return true; else return false; } bool CFraction::operator <= (CFraction &c) { CFraction cf(*this / c); if (cf.nume/cf.deno <= 1) return true; else return false; } bool CFraction::operator == (CFraction &c) { CFraction cf(*this / c); if (cf.nume/cf.deno == 1) return true; else return false; } bool CFraction::operator != (CFraction &c) { CFraction cf(*this / c); if (cf.nume/cf.deno != 1) return true; else return false; } //重载函数的实现及用于测试的main()函数 void main() { CFraction c1(3, 8), c2(1, 8), c3(1, 8); cout << "c1="; c1.display(); cout << "c2="; c2.display(); cout << "c3="; c3.display(); if (c1 > c2) cout << "c1 > c2" << endl; if (c2 < c1) cout << "c2 < c1" << endl; if (c2 >= c3) cout << "c2 >= c3" << endl; if (c2 <= c3) cout << "c2 <= c3" << endl; if (c2 == c3) cout << "c2 == c3" << endl; if (c1 != c2) cout << "c1 != c2" << endl; cout << "c1+c2="; (c1 + c2).display(); cout << "c1-c2="; (c1 - c2).display(); cout << "c1*c2="; (c1 * c2).display(); cout << "c1/c2="; (c1 / c2).display(); c3= -c3; c3.display(); system("PAUSE"); } /* 要认识的函数的返回值类型,不可随意的比较。 因其返回值类型并不是你想象中的数值。 */
![](http://my.csdn.net/uploads/201204/09/1333985598_3511.jpg)
相关文章推荐
- c++第八周【任务3】实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简)、求反、比较(6种关系)的运算。
- 第八周实验报告任务3 实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除,求反,比较6种关系的运算。
- 第八周任务三实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简)、求反、比较(6种关系)的运算。
- 实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简)、比较(6种关系)的运算
- 实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简)、比较(6种关系)的运算
- 第八周实验任务三--实现分数类中的运算符重载并可以完成分数的加减乘除、求反、比较的运算
- 第八周实验任务三--实现分数类中的运算符重载并可以完成分数的加减乘除、求反、比较的运算
- 第八周实验报告任务4 实现分数类中的运算符重载,分数类中的对象可以和整数型进行四则运算,且运算符合交换律。
- 《C++第九周实验报告3-1》----接第8周任务3,定义分数类中<<和>>运算符重载,实现分数的输入输出
- 第八周实验报告(三)完成分数的加减乘除、求反、比较
- 第九周实验报告任务3 定义分数类中<<和>>运算符重载,实现分数的输入输出,改造原程序中对运算结果显示方式,使程序读起来更自然。
- 第八周 项目3-分数类中的运算符重载(1)加减乘除和6种比较关系
- 第八周上机任务四--实现分数类中的运算符重载,分数类中的对象可以和整型数进行四则运算,且运算符合交换律
- 《C++第八周实验报告1-1(1)》---复数类中的运算符重载用类的成员函数完成
- 《C++第八周实验报告1-1(1)》---复数类中的运算符重载用类的成员函数完成
- 第十五周实验--任务2--设计分数类,开发一个窗口式程序,可以完成分数的四则运算。
- 《第五周实验报告2-1》---设计一个简单的分数类,完成对分数的几个运算
- C++第5周任务【任务2】本任务将设计一个简单的分数类,完成对分数的几个运算。一则巩固基于对象编程的方法,二则也为第10章做运算符重载等积累些感性认识。
- 《C++第八周实验报告2-1》---实现Time类中的运算符重载
- 《C++第九周实验报告2-1》---接第8周任务2,定义Time类中的<<和>>运算符重载,实现时间的输入输出