项目4-分数类和整型数的四则运算
/*
* Copyright (c) 2011, 烟台大学计算机学院
* All rights reserved.
* 作 者:王静
* 完成日期:2013 年 4 月 24 日
* 版 本 号:v1.0
* 输入描述:
* 问题描述:分数类中的对象可以和整型数进行四则运算,且运算符合交换律。
例如:CFraction a(1,3),b;int i=2; 可以完成b=a+i;。
同样,可以完成i+a, 45+a, a*27, 5/a等各种运算。
* 程序输出:
* 问题分析:
* 算法设计:略
*/
#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);
CFraction operator+(int i);
CFraction operator-(int i);
CFraction operator*(int i);
CFraction operator/(int i);
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();
}
CFraction CFraction::operator+(int i)
{
CFraction t;
t.deno=deno;
t.nume=nume+i*deno;
return t.simplify();
}
CFraction CFraction::operator-(int i)
{
CFraction t;
t.deno=deno;
t.nume=nume-i*deno;
return t.simplify();
}
CFraction CFraction::operator*(int i)
{
CFraction t;
t.deno=deno;
t.nume=nume*i;
return t.simplify();
}
CFraction CFraction::operator/(int i)
{
CFraction t;
t.deno=deno*i;
t.nume=nume;
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;
//下面自行设计对其他运算符的重载的测试
cout<<"n1+n2=";
n=n1+n2;
n.display();
cout<<"n1-n2=";
n=n1-n2;
n.display();
cout<<"n1*n2=";
n=n1*n2;
n.display();
cout<<"n1/n2=";
n=n1/n2;
n.display();
cout<<"n1+4=";
n=n1.operator+(4);
n.display();
cout<<"n1-4=";
n=n1.operator-(4);
n.display();
cout<<"n1*4=";
n=n1.operator*(4);
n.display();
cout<<"n1/4=";
n=n1.operator/(4);
n.display();
return 0;
}
运行结果:
(贴图)
心得体会:
项目4-分数类和整型数的四则运算相关推荐
- 第十三周项目一-分数类中的运算符重载
/**Copyright(c)2016,烟台大学计算机与控制工程学院*All rights reserved*文件名称:123.cpp*作 者:王蕊*完成日期:2016年5月25日*版 本 号:v1. ...
- 第六周项目一-分数类的雏形(2)
/**Copyright(c)2016,烟台大学计算机与控制工程学院*All rights reserved*文件名称:123.cpp*作 者:王蕊*完成日期:2016年4月3日*版 本 号:v1.0 ...
- 第六周项目一-分数类的雏形(1)
/**Copyright(c)2016,烟台大学计算机与控制工程学院*All rights reserved*文件名称:123.cpp*作 者:王蕊*完成日期:2016年4月3日*版 本 号:v1.0 ...
- 关于“只有静态常量整型数据成员才可以在类中初始化”
关于"只有静态常量整型数据成员才可以在类中初始化" 关于类中的静态成员变量, 在类中只能声明,不能定义 注意在类的内部只是声明,不是定义 类中的静态变量是属于类的,不属于某个对象! ...
- Java字节序,java整型数与网络字节序 byte[] 数组转换关系(ByteArrayOutputStream用法)
Java字节序 http://origin100.iteye.com/blog/267165 /** * 通信格式转换 * * Java和一些windows编程语言如c.c++.delphi所写的网络 ...
- Java字节序,java整型数与网络字节序 byte[] 数组转换关系
Java字节序 http://origin100.iteye.com/blog/267165 /** * 通信格式转换 * * Java和一些windows编程语言如c.c++.delphi所写的网络 ...
- java byte(字节_Java字节序,java整型数与网络字节序 byte[] 数组转换关系(ByteArrayOutpu......
/** * 通信格式转换 * * Java和一些windows编程语言如c.c++.delphi所写的网络程序进行通讯时,需要进行相应的转换 * 高.低字节之间的转换 * windows的字节序为低字 ...
- [C++]分数类的定义(成员函数、运算符重载)
[C++]分数类的定义(成员函数.运算符重载) 1 分数类成员和成员函数 1.1 分数类成员 1.2 分数类的成员函数 1.3 分数类的io操作 1.4 分数类的预定义 2 成员函数定义 2.1 化简 ...
- c语言中 运算对象必须是整型数的运算符是,在C语言中,运算对象必须是整型数的运算符是...
在C语言中,运算对象必须是整型数的运算符是 更多相关问题 [填空题] ()是指用户当期到当前的营收帐目费用总和. [填空题] 企业会计的确认.计量和报告应当以()为基础. [填空题] 计费中的帐单是指 ...
最新文章
- python爬虫流程-Python爬虫程序架构和运行流程原理解析
- IOS对plist配置文件的读写操作
- 【常用】2DUI跟随3D物体移动(待修复)
- 图解TCPOP-SMTP
- 同时安装Python2,Python3如何解决冲突问题【官方解法】
- Java 23 种设计模式概述 与 简单工厂模式
- matplotlib 使用简明教程(三)-一些专业图表简介
- ubuntu18.04安装有道词典等常用软件
- 原生JavaScript实现查找汉字首字母
- android setting 开发者模式,Android 设置 Setting ---开发者选项 中选项为默认配置
- μC/OS-II兼容层——让基于μC/OS-II开发的应用层无感地迁移到RT-Thread操作系统
- 坚果pro2刷回官方_坚果Pro2刷机教程刷TWRP面具详细步骤_软件开发_IT综合服务
- dedecms教程:织梦建站教程之如何为内容模型添加新字段?
- python输入一个包含若干自然数的列表_Python练习题
- AI绘画初体验(6pen平台)
- C++怎样获取当前系统时间?
- Mybatis实战练习六【批量删除Mybatis参数传递】
- 计算机专业笔记本配置2020,2020大学生笔记本电脑推荐
- 我的计算机课1000字,电脑课讲话反思1000字(共9篇).docx
- Flash的破解与加密
热门文章
- Verilog 实现千兆网UDP协议 基于88E1111--数据接收
- CSS学习笔记7PS切图与仿学成在线例子
- 遇到“该网页无法正常运作”,利用php的log查找错误
- Teamcenter 与各种工具软件的集成解决方案
- hive ddl语法使用详解
- 【程序人生】领导素质 | 第 5 级领导力:个人谦逊和坚定意志的胜利 | Level 5 Leadership: The Triumph of Humility and Fierce Resolve
- 【读书】2019年阅读记录
- 在图3-30 中,某学院的以太网交换机有三个接口分别和学院三个系的以太网相连,另外三个接口分别和电子邮件服务器、万维网服务器以及一个连接互联网的路由器相连。图中的A,B和C都是100Mbit/s以太网
- python怎么打开h5文件_python怎么查看h5文件-问答-阿里云开发者社区-阿里云
- 短文本分类:电力95598工单分类实现