C++有理数类设计


有理数类主要功能设计

之前用C语言设计了有理数数据类型C语言实现有理数数据类型(有理数库),这里再用C++做个有理数类。有理数类的功能就比C语言的有理数数据类型功能强多了,主要就是运算符重载。

  1. 有理数类,能实现以m/n形式的输入输出,支持加减乘除运算;
  2. 支持加赋,减赋,乘赋,除赋,判等,大于,小于运算;
  3. 也支持和普通double类型混合进行以上这些运算;
  4. 运算结果均已化简;
  5. 注意由于内部分子分母均是int型,乘除法容易溢出。
  6. 设计除法的除数为0时,会报错退出。

以下是有理数类头文件rational_oop.h

#ifndef RATIONAL_H
#define RATIONAL_H
#include <iostream>

using namespace std;

class Rational 
{
   
private:
   int fenzi, fenmu;
   void simply();//化简
   bool negative() const;//判断是否是负数
public:
   Rational(int numerator = 0, int denominator = 1);//构造函数
   Rational(const double n);//类型转换构造函数
   Rational(const Rational & ra);//复制构造函数
   //~Rational();没有动态分配,默认析构就行

   Rational & operator =(const Rational & ra);
   Rational & operator =(const double & n);//使有理数类对象能被double类型赋值

   //以下20个函数使有理数类对象能和double类型混合加减乘除和赋值
   Rational operator +(const Rational & ra);
   Rational operator -(const Rational & ra);
   Rational operator *(const Rational & ra);
   Rational operator /(const Rational & ra);
   Rational operator +(const double & n);
   Rational operator -(const double & n);
   Rational operator *(const double & n);
   Rational operator /(const double & n);
   friend Rational operator +(const double & n, const Rational & ra);
   friend Rational operator -(const double & n, const Rational & ra);
   friend Rational operator *(const double & n, const Rational & ra);
   friend Rational operator /(const double & n, const Rational & ra);
   Rational & operator +=(const Rational & ra);
   Rational & operator -=(const Rational & ra);
   Rational & operator *=(const Rational & ra);
   Rational & operator /=(const Rational & ra);
   Rational & operator +=(const double & n);
   Rational & operator -=(const double & n);
   Rational & operator *=(const double & n);
   Rational & operator /=(const double & n);

   int GetFenzi() {
    return fenzi;  }
   int GetFenmu() {
    return fenmu;  }
   void Set(int numerator, int denominator) {
    fenzi = numerator; fenmu = denominator; }

   //重载强制类型转换运算符,使得凡是应该出现double型的地方,均可以由有理数类对象替代。比如,可以使得
   //有理数类对象和普通double型比较大小成为可能
   operator double();

   //支持以m/n形式的有理数类对象输入输出,负号会显示在前面。
    friend ostream & operator <<(ostream & os, const Rational 
  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值