/*
* 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-分数类和整型数的四则运算相关推荐

  1. 第十三周项目一-分数类中的运算符重载

    /**Copyright(c)2016,烟台大学计算机与控制工程学院*All rights reserved*文件名称:123.cpp*作 者:王蕊*完成日期:2016年5月25日*版 本 号:v1. ...

  2. 第六周项目一-分数类的雏形(2)

    /**Copyright(c)2016,烟台大学计算机与控制工程学院*All rights reserved*文件名称:123.cpp*作 者:王蕊*完成日期:2016年4月3日*版 本 号:v1.0 ...

  3. 第六周项目一-分数类的雏形(1)

    /**Copyright(c)2016,烟台大学计算机与控制工程学院*All rights reserved*文件名称:123.cpp*作 者:王蕊*完成日期:2016年4月3日*版 本 号:v1.0 ...

  4. 关于“只有静态常量整型数据成员才可以在类中初始化”

    关于"只有静态常量整型数据成员才可以在类中初始化" 关于类中的静态成员变量, 在类中只能声明,不能定义 注意在类的内部只是声明,不是定义 类中的静态变量是属于类的,不属于某个对象! ...

  5. Java字节序,java整型数与网络字节序 byte[] 数组转换关系(ByteArrayOutputStream用法)

    Java字节序 http://origin100.iteye.com/blog/267165 /** * 通信格式转换 * * Java和一些windows编程语言如c.c++.delphi所写的网络 ...

  6. Java字节序,java整型数与网络字节序 byte[] 数组转换关系

    Java字节序 http://origin100.iteye.com/blog/267165 /** * 通信格式转换 * * Java和一些windows编程语言如c.c++.delphi所写的网络 ...

  7. java byte(字节_Java字节序,java整型数与网络字节序 byte[] 数组转换关系(ByteArrayOutpu......

    /** * 通信格式转换 * * Java和一些windows编程语言如c.c++.delphi所写的网络程序进行通讯时,需要进行相应的转换 * 高.低字节之间的转换 * windows的字节序为低字 ...

  8. [C++]分数类的定义(成员函数、运算符重载)

    [C++]分数类的定义(成员函数.运算符重载) 1 分数类成员和成员函数 1.1 分数类成员 1.2 分数类的成员函数 1.3 分数类的io操作 1.4 分数类的预定义 2 成员函数定义 2.1 化简 ...

  9. c语言中 运算对象必须是整型数的运算符是,在C语言中,运算对象必须是整型数的运算符是...

    在C语言中,运算对象必须是整型数的运算符是 更多相关问题 [填空题] ()是指用户当期到当前的营收帐目费用总和. [填空题] 企业会计的确认.计量和报告应当以()为基础. [填空题] 计费中的帐单是指 ...

最新文章

  1. python爬虫流程-Python爬虫程序架构和运行流程原理解析
  2. IOS对plist配置文件的读写操作
  3. 【常用】2DUI跟随3D物体移动(待修复)
  4. 图解TCPOP-SMTP
  5. 同时安装Python2,Python3如何解决冲突问题【官方解法】
  6. Java 23 种设计模式概述 与 简单工厂模式
  7. matplotlib 使用简明教程(三)-一些专业图表简介
  8. ubuntu18.04安装有道词典等常用软件
  9. 原生JavaScript实现查找汉字首字母
  10. android setting 开发者模式,Android 设置 Setting ---开发者选项 中选项为默认配置
  11. μC/OS-II兼容层——让基于μC/OS-II开发的应用层无感地迁移到RT-Thread操作系统
  12. 坚果pro2刷回官方_坚果Pro2刷机教程刷TWRP面具详细步骤_软件开发_IT综合服务
  13. dedecms教程:织梦建站教程之如何为内容模型添加新字段?
  14. python输入一个包含若干自然数的列表_Python练习题
  15. AI绘画初体验(6pen平台)
  16. C++怎样获取当前系统时间?
  17. Mybatis实战练习六【批量删除Mybatis参数传递】
  18. 计算机专业笔记本配置2020,2020大学生笔记本电脑推荐
  19. 我的计算机课1000字,电脑课讲话反思1000字(共9篇).docx
  20. Flash的破解与加密

热门文章

  1. Verilog 实现千兆网UDP协议 基于88E1111--数据接收
  2. CSS学习笔记7PS切图与仿学成在线例子
  3. 遇到“该网页无法正常运作”,利用php的log查找错误
  4. Teamcenter 与各种工具软件的集成解决方案
  5. hive ddl语法使用详解
  6. 【程序人生】领导素质 | 第 5 级领导力:个人谦逊和坚定意志的胜利 | Level 5 Leadership: The Triumph of Humility and Fierce Resolve
  7. 【读书】2019年阅读记录
  8. 在图3-30 中,某学院的以太网交换机有三个接口分别和学院三个系的以太网相连,另外三个接口分别和电子邮件服务器、万维网服务器以及一个连接互联网的路由器相连。图中的A,B和C都是100Mbit/s以太网
  9. python怎么打开h5文件_python怎么查看h5文件-问答-阿里云开发者社区-阿里云
  10. 短文本分类:电力95598工单分类实现