/项目3-分数类中的运算符重载
/*
* Copyright (c) 2011, 烟台大学计算机学院
* All rights reserved.
* 作 者:王静
* 完成日期:2013 年 4 月 24 日
* 版 本 号:v1.0
* 输入描述:
* 问题描述:实现分数类中的运算符重载,
在分数类中可以完成分数的加减乘除(运算后再化简)、求反、
比较(6种关系)的运算。可以从第5周项目2的代码开始工作。
* 程序输出:
* 问题分析:
* 算法设计:略
*/
#include<iostream>
#include<cmath>
using namespace std;
class CFraction
{private:
int nume; // 分子
int deno; // 分母
public:
CFraction(int nu=0,int de=1); //置值,改变值时用
CFraction simplify(); //化简(使分子分母没有公因子)
//比较运算符(二目)的重载
bool operator > (CFraction &t);
bool operator < (CFraction &t);
bool operator == (CFraction &t);
//二目运算符的重载
CFraction operator+(CFraction &n);
CFraction operator-(CFraction &n);
CFraction operator*(CFraction &n);
CFraction operator/(CFraction &n);
void display();
};
CFraction::CFraction(int nu,int de) //置值
{
nume=nu;
deno=de;
}
CFraction CFraction::simplify()
{
CFraction n;
n.nume=nume;n.deno=deno;
int i;
if(nume%deno==0){
n.deno=1;
n.nume=nume/deno;
}else{
if(nume>deno){
for(i=2;i<=n.deno;i++){
if(nume%i==0&&deno%i==0){
n.nume=n.nume/i;
n.deno=n.deno/i;
}
}
}else{
for(i=2;i<=n.nume;i++){
if(n.nume%i==0&&n.deno%i==0){
n.nume=n.nume/i;
n.deno=n.deno/i;
}
}
}
}
return n;
}
bool CFraction::operator > (CFraction &t)
{
if(nume>t.nume||(nume==t.nume&&deno>t.deno)){
return true;
}else{
return false;
}
}
bool CFraction::operator < (CFraction &t)
{
if(nume<t.nume||(nume==t.nume&&deno<t.deno)){
return true;
}else{
return false;
}
}
bool CFraction::operator == (CFraction &t)
{
if(nume==t.nume&&deno==t.deno){
return true;
}else{
return false;
}
}
//二目运算符的重载
CFraction CFraction::operator+(CFraction &n)
{
CFraction t;
t.deno=deno*n.deno;
t.nume=(n.nume)*deno+nume*(n.deno);
return t.simplify();
}
CFraction CFraction::operator-(CFraction &n)
{
CFraction t;
t.deno=deno*n.deno;
t.nume=nume*n.deno-n.nume*deno;
return t.simplify();
}
CFraction CFraction::operator*(CFraction &n)
{
CFraction t;
t.deno=deno*n.deno;
t.nume=nume*n.nume;
return t.simplify();
}
CFraction CFraction::operator/(CFraction &n)
{
CFraction t;
t.deno=deno*n.nume;
t.nume=nume*n.deno;
return t.simplify();
}
void CFraction::display()
{
if(deno==1){
cout<<nume<<endl;
}else{
cout<<nume<<"/"<<deno<<endl;
}
}
int main()
{
CFraction n1(3,2),n2(1,2),n;//构造函数,初始化用
cout<<"n1为:";
n1.display();
cout<<"n2为:";
n2.display();
cout<<"下面比较两个时间大小:\n";
if (n1>n2) cout<<"n1>n2"<<endl;
if (n1<n2) cout<<"n1<n2"<<endl;
if (n1==n2) cout<<"n1=n2"<<endl;
cout<<endl;
//下面自行设计对其他运算符的重载的测试
n=n1+n2;
n.display();
n=n1-n2;
n.display();
n=n1*n2;
n.display();
n=n1/n2;
n.display();
return 0;
}
运行结果:
(贴图)
心得体会:
/项目3-分数类中的运算符重载相关推荐
- 第十三周项目一-分数类中的运算符重载
/**Copyright(c)2016,烟台大学计算机与控制工程学院*All rights reserved*文件名称:123.cpp*作 者:王蕊*完成日期:2016年5月25日*版 本 号:v1. ...
- 项目3-分数类中的运算符重载
/* * Copyright (c) 2011, 烟台大学计算机学院 * All rights reserved. * 作 者:王静 * 完成日期:2013 年 5 月 5 日 * 版 本 号:v1. ...
- 8-3 实现分数类中的运算符重载
/* * 作 者: 霍雨佳 * 完成日期:2014 年4月15日 * 版 本 号:v1.0 * 问题描述:实现分数类中的运算符重载 * 样例输入: * 样例输出: * 项目要求:实现分数类中的运算符重 ...
- 第十二周项目二-Time类中的运算符重载
/**Copyright(c)2016,烟台大学计算机与控制工程学院*All rights reserved*文件名称:123.cpp*作 者:王蕊*完成日期:2016年5月24日*版 本 号:v1. ...
- 分数类中的运算符重载(续)
问题及代码: /** Copyright (c) 2014, 烟台大学计算机学院* All rights reserved.* 文件名称:test.cpp* 作 者:李盈盈* 完成日期:2015年 0 ...
- 第十二周上机实践项目 项目1-实现复数类中的运算符重载 (2)
问题及代码: [项目-实现复数类中的运算符重载] (1)请用类的成员函数,定义复数类重载运算符+.-.*./,使之能用于复数的加减乘除 class Complex { public:Complex() ...
- 第十二周-实现复数类中的运算符重载
/* *Copyright (c) 2016,烟台大学计算机学院 *All rights reserved. *文件名称:main.cpp *作 者:李德彪 *完成时间:2016年5月23日 * ...
- 第7周-项目1-完整实现复数类中的运算符重载-扩展+、-、*、/运算符的功能
问题及代码: /* *Copyright (c)2015,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:number.cpp *作 者:单昕昕 *完成日期:20 ...
- 8-2 实现Time类中的运算符重载
/* * 作 者: 霍雨佳 * 完成日期:2014 年4月15日 * 版 本 号:v1.0 * 问题描述:实现Time类中的运算符重载 * 样例输入: * 样例输出: * 项目要求:实现Time类中的 ...
最新文章
- 以太坊代币空投合约的实现
- 在python中调用js或者nodejs要使用PyExecJs第三方包。
- 理解并取证:广域网上的PPP协议
- python实训项目-实验楼Python项目
- PCB第二节知识整理
- 软件架构设计的6大原则
- 存储过程实现邮件发送
- Javascript屏蔽IE和Firefox浏览器默认按键响应(快捷键功能)
- MFC windows程序设计(第三版)课后习题第一章
- 关于SWAT模型的一些原理(二)
- GoBatch简介 —— 一款基于go语言的企业级批处理框架(Golang下的SpringBatch)
- github托管静态网页
- 从金山毒霸看这个社会的“底线”
- Linux 命令量测试
- 部署k8s(15):持久化存储方案
- echarts legend图例显示数值和百分比
- 【五六七人口普查】省市两级人口受教育情况
- python word保存图_使用python matplotlib 画图导入到word中如何保证分辨率
- 怀揣美好前行 善良的人终究都会幸福
- NahimicSvc64.exe逻辑炸弹导致CPU直飚99%