分数类rationalNumber实现加减乘除与比较运算

4星 · 超过85%的资源 需积分: 15 37 下载量 53 浏览量 更新于2024-10-30 4 收藏 35KB DOC 举报
在本篇代码中,我们讨论的是如何创建一个名为`rationalNumber`的C++类,用于表示分数并实现重载的算术运算符和比较运算符。这个类的主要目标是处理分数的构造、简化(约分)和基本数学运算,同时确保在执行过程中不会出现分母为零或负数的情况。 首先,构造函数`rationalNumber`有两个可选参数,用于初始化分子(fenzi)和分母(fenmu)。它检查分母是否为零,如果是则输出错误信息;如果分母为负,则将其取相反数同时调整分子的符号,以保持分数的正负性。构造函数还包括一个`yuefen`方法,用于将分数化简到最简形式。 `yuefen`方法通过循环和除法操作,找到分子和分母的最大公约数(GCD),并用它们来除以当前值,直到两者不再有公共因子。这样可以确保分数的最简形式。 接下来,代码定义了四个运算符重载函数:`operator+`、`operator-`、`operator*`和`operator/`。这些函数分别对应于加法、减法、乘法和除法运算。它们接收一个`rationalNumber`类型的参数`c`,通过计算新的分子和分母,调用`yuefen`方法进行简化后返回一个新的`rationalNumber`对象。 此外,还实现了关系运算符重载,包括`operator>`、`operator<`和`operator==`。`operator>`和`operator<`用来比较两个分数的大小,返回一个布尔值,而`operator==`则用于判断两个分数是否相等。 最后,还有一个未完成的`rationalnumber::operator-(rationalnumberc)`函数,它的实现略显不完整,需要对分子和分母的处理稍作修改,以完成减法运算。 这段代码的核心知识点是C++中的类设计和运算符重载,展示了如何创建一个自定义类型来表示分数,以及如何确保其在数学运算过程中的正确性和简化形式。这对于理解面向对象编程中的运算符重载概念和数值类的实现至关重要。

定义复数类Complex,包含实部r(double类型)、虚部i(double类型)两个数据成员。 (1)定义含默认参数值的构造函数Complex(double real=0.0, double image=0.0),使用户能够在构造对象的同时为对象赋初值。 (2)以函数成员的方式对复数的加法“+”、减法“-”、乘法“”三个二元运算符进行重载,以实现复数之间的加、减、乘功能。 (3)以友元函数的方式重载输出运算符“<<”,使得Complex类的对象能够显示其自身信息。 主函数main()中已提供了该类的相应测试代码。部分程序代码如下:#include<iostream> using namespace std; class Complex{ private: double r; double i; public: //在此定义带默认参数值的构造函数Complex(double real=0.0, double image=0.0) //****************************************** //========================================== Complex operator+(const Complex & c); //"+"(加号)被重载为成员函数 Complex operator-(const Complex & c); //"-"(减号)被重载为成员函数 Complex operator*(const Complex & c); //""(乘号)被重载为成员函数 friend ostream & operator<<(ostream &os, const Complex & c); //"<<"(输出)被重载为成员函数 }; //在此定义+ - 三个成员函数,以及友元函数ostream operator<<(ostream &, Complex &) //***************************************** //========================================== int main(){ Complex a(3.0, 4.0); Complex b(10.5, 20.5); Complex c; c = a+b; cout<<c<<endl; //c.print(); cout<<"---------------\n"; c=a-b; cout<<c<<endl; //c.print(); cout<<"---------------\n"; c=a*b; cout<<c<<endl; //c.print(); cout<<"---------------\n"; }

2023-05-30 上传