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