8-3 实现分数类中的运算符重载
来源:互联网 发布:阿里云服务器内存不足 编辑:程序博客网 时间:2024/05/17 01:41
/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称: 分数类中的运算符重载
* 作 者: 张传新
* 完成日期: 2012 年 04 月 08 日
* 版 本 号: V.1.0
* 对任务及求解方法的描述部分
* 问题描述:实现分数类中的运算符重载,在分数类中可以完成分数的
* 加减乘除(运算后再化简)、求反、比较(6种关系)的运算。
* 程序头部的注释结束
#include<iostream>using namespace std;class CFraction{private:int nume; // 分子int deno; // 分母public:CFraction(int nu = 1,int de = 2); //构造函数,初始化用void input(); //按照"nu/de"的格式,如"5/2"的形式输入void Simplify(); //化简(使分子分母没有公因子)void S_Simplify(); //化简(以4/3为例,输出1(1/3),表示一又三分之一)void output(int style); //输出:以8/6为例,style为0时,输出8/6; //style为1时,输出4/3; //style为2时,输出1(1/3),表示一又三分之一; //不给出参数和非1、2,认为是方式0void display(); //输出分数CFraction operator+(CFraction &CF2); //定义分数加法CFraction operator-(CFraction &CF2); //定义分数减法CFraction operator*(CFraction &CF2); //定义分数乘法CFraction operator/(CFraction &CF2); //定义分数除法CFraction operator-();//取反//比较大小bool operator > (CFraction &CF2);bool operator < (CFraction &CF2);bool operator >= (CFraction &CF2);bool operator <= (CFraction &CF2);bool operator == (CFraction &CF2);bool operator != (CFraction &CF2);};//构造函数,初始化用CFraction::CFraction(int nu,int de){nume = nu;deno = de;}//输出分数void CFraction::display(){cout << nume << "/" << deno <<endl;}//按照"nu/de"的格式,如"5/2"的形式输入void CFraction::input(){int a,c;char b;cout << "请输入分数(按照“a/b”的格式输入):" << endl;cin >> a;cin >> b;cin >> c;nume = a;deno = c;}//化简(使分子分母没有公因子)void CFraction::Simplify(){for(int i = 2;i <= nume && i <= deno;i++){if(nume % i == 0 && deno % i == 0){nume = nume/i;deno = deno/i; i--;}}cout << nume << "/" << deno << endl;}//化简(以4/3为例,输出1(1/3),表示一又三分之一)void CFraction::S_Simplify(){for(int i = 2;i <= nume && i <= deno;i++){if(nume % i == 0 && deno % i == 0){nume = nume/i;deno = deno/i;i--;}} if(nume >= deno){int n; n = nume / deno;nume = nume % deno; cout << n << "(" << nume << "/" << deno << ")" << endl;}else{cout << "(" << nume << "/" << deno << ")" << endl;}}//输出:以8/6为例,style为0时,输出8/6;//style为1时,输出4/3;//style为2时,输出1(1/3),表示一又三分之一;//不给出参数和非1、2,认为是方式0void CFraction::output(int style){if(style == 1){CFraction::Simplify();}else if(style == 2){CFraction::S_Simplify();}else{cout << nume << "/" << deno << endl;}}//定义分数加法CFraction CFraction::operator+(CFraction &CF2){nume = nume * CF2.deno + CF2.nume * deno;deno = deno * CF2.deno;return (*this);}//定义分数减法CFraction CFraction::operator-(CFraction &CF2){nume = nume * CF2.deno - CF2.nume * deno;deno = deno * CF2.deno;return (*this);}//定义分数乘法CFraction CFraction::operator*(CFraction &CF2){nume = nume * CF2.nume;deno = deno * CF2.deno;return (*this);}//定义分数除法CFraction CFraction::operator/(CFraction &CF2){nume = nume * CF2.deno;deno = deno * CF2.nume;return (*this);}//取反CFraction CFraction::operator-(){nume = - nume;deno = deno;return (*this);}//比较大小bool CFraction::operator > (CFraction &CF2) { nume = nume * CF2.deno;CF2.nume = CF2.nume * deno; if( nume > CF2.nume ) { return true; } else { return false; } } bool CFraction::operator < (CFraction &CF2) { nume = nume * CF2.deno;CF2.nume = CF2.nume * deno; if( nume < CF2.nume ) { return true; } else { return false; } } bool CFraction::operator >= (CFraction &CF2) { nume = nume * CF2.deno;CF2.nume = CF2.nume * deno; if( nume >= CF2.nume ) { return true; } else { return false; } } bool CFraction::operator <= (CFraction &CF2) { nume = nume * CF2.deno;CF2.nume = CF2.nume * deno; if( nume <= CF2.nume ) { return true; } else { return false; } } bool CFraction::operator == (CFraction &CF2) { nume = nume * CF2.deno;CF2.nume = CF2.nume * deno; if( nume == CF2.nume ) { return true; } else { return false; } } bool CFraction::operator != (CFraction &CF2) { nume = nume * CF2.deno;CF2.nume = CF2.nume * deno; if( nume != CF2.nume ) { return true; } else { return false; } } void main(){CFraction CF1, CF2;CF1.input(); CF1.output(1);CF2.input(); CF2.output(2);cout << endl;CFraction CF3(3,4), CF4(1,4),CF5;cout << "CF3为:" ; CF3.display();cout << "CF4为:" ; CF4.display(); CF5 = CF3;CF5 = CF5 + CF4;cout << "CF3 + CF4 = ";CF5.display();cout << "化简后得:";CF5.Simplify();CF5 = CF3;CF5 = CF5 - CF4;cout << "CF3 - CF4 = ";CF5.display();cout << "化简后得:";CF5.Simplify();CF5 = CF3;CF5 = CF5 * CF4;cout << "CF3 * CF4 = ";CF5.display();cout << "化简后得:";CF5.Simplify();CF5 = CF3;CF5 = CF5 / CF4;cout << "CF3 / CF4 = ";CF5.display();cout << "化简后得:";CF5.Simplify();CF5 = CF3;CF5 = - CF5;cout << "-CF3 = ";CF5.display();cout << "比较两个分数大小:" << endl; if (CF3 > CF4) cout << "CF3 > CF4" << endl;if (CF3 < CF4) cout << "CF3 < CF4" << endl;if (CF3 >= CF4) cout << "CF3 >= CF4" << endl;if (CF3 <= CF4) cout << "CF3 <= CF4" << endl;if (CF3 == CF4) cout << "CF3 == CF4" << endl;if (CF3 != CF4) cout << "CF3 != CF4" << endl;system("pause");}
运行结果:
感言:
昨晚第二个感觉第三个比较轻松一些,同时在做第三个任务的时候,
想到第二个任务中有些漏洞,并及时的改正过来了,感觉。。。。
挺好!
- 8-3 实现分数类中的运算符重载
- 8-3 实现分数类中的运算符重载
- 8-3 分数类中的运算符重载
- 2-8-3 分数类中的运算符重载
- 第8周-任务3-实现分数类中的运算符重载
- 第8周任务3(实现分数类中的运算符重载)
- 实现分数类类中的运算符重载
- 第8章-任务4-实现分数类中的运算符重载(分数与整数运算)
- 分数类中的运算符重载
- 分数类中的运算符重载
- 分数类中的运算符重载
- 分数类中的运算符重载
- 分数类中的运算符重载
- 分数类中的运算符重载
- 分数类中的运算符重载
- 分数类中的运算符重载
- 分数类中的运算符重载
- 分数类中的运算符重载
- Hangover解题报告
- 【Linux 驱动】驱动开发第一步----开发环境搭配
- 测试测试测试
- 第八周实验报告2
- 让Entity Framework支持MySql数据库
- 8-3 实现分数类中的运算符重载
- 第八周实验报告任务2 实现Time类中的运算符重载
- 如何对付MSSQL 2008 配置管理器不可用
- 《第八周任务一-3》实现复数类中的运算符的重载函数
- 第八周上级任务1
- Word2010 自动生成目录
- http中的认证
- ORACLE外连接小结 .
- 第八周实验报告1——成员函数