第八周实验报告(任务3)
2012-04-10 20:03
363 查看
程序头部注释开始
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称: 分数的四则运算
* 作 者: 郭广建
* 完成日期: 2012年 04 月 10 日
* 版 本 号: 1.0
源程序:
运行结果:
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称: 分数的四则运算
* 作 者: 郭广建
* 完成日期: 2012年 04 月 10 日
* 版 本 号: 1.0
源程序:
#include <iostream> using namespace std; class CFraction { private: int nume; // 分子 int deno; // 分母 public: CFraction(int nu = 0, int de = 1); //构造函数,初始化用 CFraction operator+(CFraction &c2); //运算符的重载 CFraction operator-(CFraction &c2); CFraction operator*(CFraction &c2); CFraction operator/(CFraction &c2); void Simplify(); //化简 void Output(); }; int gcd(int de1,int de2); //求最大公约数 CFraction::CFraction(int nu , int de) { if(de != 0) { nume = nu; deno = de; } else { cout << "输入错误!" <<endl; exit(0); } } CFraction CFraction::operator+(CFraction &c2) { CFraction c; int Max_r = gcd(deno, c2.deno); c.deno = (deno / Max_r) * (c2.deno / Max_r); c.nume = (nume * (c.deno / deno)) + (c2.nume * (c.deno / c2.deno)); return c; } CFraction CFraction::operator-(CFraction &c2) { CFraction c; int Max_r = gcd(deno, c2.deno); c.deno = (deno / Max_r) * (c2.deno / Max_r); c.nume = (nume * (c.deno / deno)) - (c2.nume * (c.deno / c2.deno)); return c; } CFraction CFraction::operator*(CFraction &c2) { return CFraction(nume * c2.nume , deno * c2.deno); } CFraction CFraction::operator/(CFraction &c2) { return CFraction(nume * c2.deno , deno * c2.nume); } void CFraction::Simplify() { int m, n, r; m = abs(nume); n = abs(deno); r = gcd(m, n); deno /= r; nume /= r; if(deno < 0) { deno = -deno; nume = -nume; } } void CFraction::Output() { cout << nume << '/' << deno <<endl; } void main() { CFraction c1(3,5), c2(2,8),c3; cout << "c1 = " ; c1.Output(); cout << "c2 = " ; c2.Output(); c2.Simplify(); cout << "c2化简得:"; c2.Output(); c3 = c1 + c2; cout << "c1 + c2 = " ; c3.Output(); c3 = c1 - c2; cout << "c1 - c2 = " ; c3.Output(); c3 = c1 * c2; cout << "c1 * c2 = " ; c3.Output(); c3 = c1 / c2; cout << "c1 / c2 = " ; c3.Output(); system("pause"); } int gcd(int de1,int de2) { int r; if(de1 < de2) { r = de1; de1 = de2; de2 = r; } while(r = de1 % de2) { de1 = de2; de2 = r; } return de2; }
运行结果:
相关文章推荐
- 第八周实验报告(任务2)
- 第八周实验报告 任务三
- 第八周实验报告任务3 实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除,求反,比较6种关系的运算。
- 第八周实验报告 任务三(改)
- 第八周实验报告(任务三)【分数的加减乘除】
- 第八周实验报告 任务四(改)
- 第八周实验报告任务4 实现分数类中的运算符重载,分数类中的对象可以和整数型进行四则运算,且运算符合交换律。
- C++程序设计实验报告(五十一)---第八周任务1-1
- 第八周实验报告任务2 实现Time类中的运算符重载
- 第八周实验报告 任务二(改)
- 第八周实验报告(任务1-方案1)
- C++程序设计实验报告(五十二)---第八周任务1-2
- 第八周实验报告(任务1-方案2)
- C++程序设计实验报告(五十三)---第八周任务1-3
- 《第八周实验报告任务3》
- C++程序设计实验报告(五十四)---第八周任务二
- 第八周实验报告(任务1-方案3)
- C++程序设计实验报告(五十五)---第八周任务三
- 第八周实验报告 任务一
- C++程序设计实验报告(五十六)---第八周任务四