面向对象程序设计实例_有理数类的运算
2021/9/25 20:15:17
本文主要是介绍面向对象程序设计实例_有理数类的运算,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
面向对象程序设计实例_有理数类的运算
题目: 试定义一个有理数类,该类能提供有理数的加和乘运算
分析:
设计一个类需要考虑两方面的问题:
- 设计数据成员:
保存一个有理数即保存它的分子和分母两个整数,但要注意化成最简形式 - 设计成员函数:
加减乘除运算的实现,用户可以调用,需设计为共有的
其中需要注意有理数要求是最简形式,如果有时用户给出的不是最简形式,则必须化简,使其成为最简形式。化简的工作在许多地方都需要用到,而且是一个独立的功能,可以将其写成一个函数。由于化简是类内部的工作,有理数的用户不需要调用,这类函数称为工具函数(通常设计为private的)。
代码清单:
- 有理数类的定义(头文件)
//文件名:Rational.h # ifndef rational_h # define ratioal_h #include <iostream> using namespace std; class Rational { private: int num;//分子 int den;//分母 void ReductFraction();//化简函数 public: void create(int n, int d) { num = n; den = d; ReductFraction(); } void add(const Rational& r1, const Rational& r2);//r1+r2 void multi(const Rational& r1, const Rational& r2);//r1*r2 void display() { cout << num << "/" << den; } }; #endif
- 函数的实现
//文件名:Rational.cpp # include "Rational.h" //add函数将r1和r2相加,结果存于调用该函数的变量中 void Rational::add(const Rational& r1, const Rational& r2) { num = r1.num * r1.den + r2.num * r2.den; den = r1.den * r2.den; ReductFraction(); } //multi函数将r1和r2相乘,结果存于调用该函数的变量中 void Rational::multi(const Rational& r1, const Rational& r2) { num = r1.num * r2.num; den = r1.den * r2.den; ReductFraction(); } //ReductFraction()函数实现有理数的化简 //方法:找出num和den的最大公因子,让他们分别除以最大公因子 void Rational::ReductFraction() { int tmp = (num > den) ? den : num; for (; tmp > 1; --tmp) { if (num % tmp == 0 && den % tmp == 0) { num /= tmp; den /= tmp; break; } } }
- 有理数类应用示例
# include<iostream> # include"Rational.h" using namespace std; int main() { int n, d; Rational r1, r2, r3; cout << "请输入第一个有理数的分子和分母:"; cin >> n >> d; r1.create(n, d); cout<< "请输入第二个有理数的分子和分母:"; cin >> n >> d; r2.create(n, d); r3.add(r1, r2); r1.display(); cout << "+"; r2.display(); cout << "="; r3.display(); cout << endl; r3.multi(r1, r2); r1.display(); cout << "*"; r2.display(); cout << "="; r3.display(); cout << endl; return 0; }
运行结果如下图:
这篇关于面向对象程序设计实例_有理数类的运算的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南