C++:有理数Rational类

【问题描述】

定义一个有理数类Rational。该类存放分数形式的有理数。要求如下:

(1)定义私有变量x和y分别存放分子和分母。

(2)定义带默认参数值的构造函数,默认有理数为0(分子为0,分母为1)。

(3)定义成员函数Add,Sub,Mul和Div,分别用来完成两个有理数的加、减、乘、除运算。

(4)以X/Y形式打印有理数的Print函数。

(5)以浮点数形式打印有理数的PrintFloat函数。(说明:分数不需以最简形式存放,四则运算后亦不需约分。主函数中需要你写出输出语句,其中加法和乘法输出X/Y形式结果,减法和除法输出浮点数形式结果,两个分数的分子分母皆由键盘输入)

#include<iostream>
using namespace std;

class Rational 
{
	int x,y; //x-分子; y-分母 
public:
	Rational(int X = 0, int Y = 1)
	{
		x = X;
		y = Y;
	}
	void Add(Rational r1,Rational r2)
	{
		x = r1.x * r2.y + r1.y * r2.x;
		y = r1.y * r2.y;
		Print();
	}
	void Sub(Rational r1,Rational r2)
	{
		x = r1.x * r2.y - r1.y * r2.x;
		y = r1.y * r2.y;
		PrintFloat();
	}
	void Mul(Rational r1,Rational r2)
	{
		x = r1.x * r2.x;
		y = r1.y * r2.y;
		Print();
	}
	void Div(Rational r1,Rational r2)
	{
		x = r1.x * r2.y;
		y = r1.y * r2.x;
		PrintFloat();
	}
	void Print()
	{
		cout<<x<<"/"<<y<<endl;
	}
	void PrintFloat()
	{
		cout<<double(x)/y<<endl;//注意类型转换,否则无法得到小数 
	} 

};



int main()
{
	int x1,y1,x2,y2;
	cin>>x1>>y1>>x2>>y2;
	Rational r1(x1,y1); //有理数r1的分子分母分别为x1,y1 
	Rational r2(x2,y2);//有理数r2的分子分母分别为x2,y2 
	Rational r;  //有理数四则运算结果 
	r.Add(r1,r2); 
	r.Sub(r1,r2);
	r.Mul(r1,r2);
	r.Div(r1,r2);
	
	return 0;
}


【样例输入】

3 4 1 2

【样例输出】

10/8

0.25

3/8

1.5