第八周实验报告任务3 实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除,求反,比较6种关系的运算。
来源:互联网 发布:centos7 pdo mysql 编辑:程序博客网 时间:2024/06/05 10:46
/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简)、求反、比较(6种关系)的运算
* 作 者: 陶锋
* 完成日期: 2012 年 04 月 09 日
* 版 本 号: V1.0
* 对任务及求解方法的描述部分
* 输入描述:
* 问题描述:
* 程序输出:
* 程序头部的注释结束
*/
#include<iostream> using namespace std; int gcd(int m, int n); class CFraction{private:int nume; // 分子int deno; // 分母public://构造函数及运算符重载的函数声明CFraction(int nu=0,int de=1); //构造函数,初始化用 void Simplify(); //化简(使分子分母没有公因子) void output(); //输出:以8/6为例,style为0时,输出8/6; bool operator > (CFraction &t); bool operator < (CFraction &t); bool operator >= (CFraction &t); bool operator <= (CFraction &t); bool operator == (CFraction &t); bool operator != (CFraction &t); CFraction operator+(CFraction &c); CFraction operator-(CFraction &c);CFraction operator*(CFraction &c); CFraction operator/(CFraction &c); CFraction operator-();};CFraction::CFraction(int nu,int de) //构造函数,初始化用 { if (de!=0) { nume=nu; deno=de; } else { cerr<<"初始化中发生错误,程序退出\n"; system("pause"); exit(0); } }void CFraction::Simplify() //化简(使分子分母没有公因子) { int n; if(nume < 0) { n = gcd(-nume, deno); } else { n = gcd(nume, deno); } nume = nume / n; deno = deno / n;}// 求m,n的最大公约数 int 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::output() //输出:以8/6为例,style为0时,输出8/6; {cout<<nume<<'/'<<deno<<endl;}bool CFraction::operator > (CFraction &t){CFraction c2,c3;c2.nume =nume*t.deno ;c3.nume =t.nume *deno;if(c2.nume >c3.nume )return true;elsereturn false;}bool CFraction::operator < (CFraction &t) {CFraction c2,c3;c2.nume =nume*t.deno ;c3.nume =t.nume *deno;if(c2.nume <c3.nume )return true;elsereturn false;}bool CFraction::operator >= (CFraction &t){ CFraction c1; c1.nume =nume;c1.deno =deno; if (c1<t) return false; return true; } bool CFraction::operator <= (CFraction &t){ CFraction c1; c1.nume =nume;c1.deno =deno; if (c1>t) return false; return true; } bool CFraction::operator == (CFraction &t) {CFraction c1; c1.nume =nume;c1.deno =deno;if (c1<t) return false; if (c1>t) return false; return false;}bool CFraction::operator != (CFraction &t){CFraction c1; c1.nume =nume;c1.deno =deno;if (c1==t) return false;return true;}CFraction CFraction::operator+(CFraction &c){CFraction c2,c3,c4;c2.nume =nume*c.deno ;c3.nume =c.nume *deno;c2.deno =deno*c.deno ;c3.deno =c.deno *deno;c4.nume=c2.nume +c3.nume ;c4.deno =c2.deno ;c4.Simplify ();return c4;}CFraction CFraction::operator-(CFraction &c){CFraction c2,c3,c4;c2.nume =nume*c.deno ;c3.nume =c.nume *deno;c2.deno =deno*c.deno ;c3.deno =c.deno *deno;c4.nume=c2.nume -c3.nume ;c4.deno =c2.deno ;c4.Simplify ();return c4;}CFraction CFraction::operator*(CFraction &c) {CFraction c2,c3,c4;c2.nume =nume*c.nume ;c2.deno =deno*c.deno ;c2.Simplify ();return c2;}CFraction CFraction::operator/(CFraction &c){CFraction c2,c3;c2.nume =c.deno ;c2.deno =c.nume ;c3.nume =nume*c2.nume ;c3.deno =deno*c2.deno ;c3.Simplify ();return c3;}CFraction CFraction::operator-(){CFraction c2;c2.nume =nume;c2.deno =deno;c2.Simplify ();if(c2.nume<0 || c2.deno<0){if(c2.nume <0){c2.nume =-nume;}else{c2.deno =-deno;}}else{c2.nume =-nume;c2.deno =deno;}return c2;}//用于测试的main()函数void main() { CFraction c1(8,20),c2(11,20),c; cout<<"c1为:"; c1.output(); cout<<"c2为:"; c2.output(); cout<<"下面比较两个时间大小:\n"; if (c1>c2) cout<<"c1>c2"<<endl; if (c1<c2) cout<<"c1<c2"<<endl; if (c1==c2) cout<<"c1=c2"<<endl; if (c1!=c2) cout<<"c1≠c2"<<endl; if (c1>=c2) cout<<"c1≥c2"<<endl; if (c1<=c2) cout<<"c1≤c2"<<endl; cout<<endl; cout<<"c1+c2的数值为:"; c=c1+c2; c.output();cout<<endl; cout<<"c1-c2的数值为:"; c=c1-c2; c.output(); cout<<endl; cout<<"c1*c2的数值为:"; c=c1*c2; c.output();cout<<endl; cout<<"c1/c2的数值为:"; c=c1/c2; c.output(); cout<<endl;cout<<"对c1取反的结果为:";c=-c1;c.output ();cout<<endl; system("PAUSE"); }
- 第八周实验报告任务3 实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除,求反,比较6种关系的运算。
- 《C++第八周实验报告3-1》---实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简)、求反、比较(6种关系)的运算
- c++第八周【任务3】实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简)、求反、比较(6种关系)的运算。
- 第八周任务三实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简)、求反、比较(6种关系)的运算。
- 第八周实验任务三--实现分数类中的运算符重载并可以完成分数的加减乘除、求反、比较的运算
- 第八周实验任务三--实现分数类中的运算符重载并可以完成分数的加减乘除、求反、比较的运算
- 实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简)、比较(6种关系)的运算
- 实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简)、比较(6种关系)的运算
- 第八周实验报告任务4 实现分数类中的运算符重载,分数类中的对象可以和整数型进行四则运算,且运算符合交换律。
- 第八周 项目3-分数类中的运算符重载(1)加减乘除和6种比较关系
- 第八周项目三 分数类中的运算符重载-(1)分数的加减乘除
- 第八周实验报告(三)完成分数的加减乘除、求反、比较
- 9.3分数类中的运算符重载,完成分数的加减乘除
- 第7周-项目3-分数类中的运算符重载-分数的加减乘除
- 《C++第九周实验报告3-1》----接第8周任务3,定义分数类中<<和>>运算符重载,实现分数的输入输出
- 第7周-项目3-分数类中的运算符重载-拓展分数的加减乘除(分数与整型 )
- 第八周项目三 分数类中的运算符重载-(2)分数与分数、分数与整数的四则运算
- 第八周-运算符重载-分数类的运算符重载(1)-加减乘除以及大小比较
- 随机抽样一致-RANSAC
- xdos攻击ac实验环境
- 第8周实验报告任务一
- [C++ 学习] C++ Primer 笔记 bitset 和 位操作
- 第八周实验报告 任务四
- 第八周实验报告任务3 实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除,求反,比较6种关系的运算。
- 第八周实验报告二
- 排错:打开资源出现RC2104
- 有空闲下来多读点书
- 第八周任务1
- 第八周实验报告(1)
- SQLServer 2008 对视图或函数’XXX’的更新或插入失败,因其包含派生域或常量域解决
- 黑马程序员-网络编程
- QT打包