一、题目描述
Fraction类的基本形式如下:
// 定义Fraction类
class Fraction
{
private:
int fz, fm;
int commonDivisor(); // 计算最大公约数
void contracted(); // 分数化简
public:
Fraction(int = 0, int = 1);
Fraction(Fraction&);
Fraction operator+(Fraction);
Fraction operator-(Fraction);
Fraction operator*(Fraction);
Fraction operator/(Fraction);
void set(int = 0, int = 1);
void disply();
};
要求如下:
1.实现Fraction类;common_divisor()和contracted()函数体可为空,不实现具体功能。
2.编写main函数,初始化两个Fraction对象的,计算它们之间的加减乘除。
二、输入与输出
1.输入
第1行:依次输入第1个和第2个Fraction对象的分子和分母值。
1 3 2 5
2.输出
每行依次分别输出加减乘除计算后的Fraction对象(直接输出分数值,不需要约简)。
fraction=11/15
fraction=-1/15
fraction=2/15
fraction=5/6
三、参考代码
#include<iostream>
#include<string>
#include<cmath>
#include<algorithm>
using namespace std;
class fra
{
private:
int fz, fm;
int common() {};
void contra() {};
public:
fra() { fz = 0; fm = 0; }
fra(fra& a) {
fz = a.fz;
fm = a.fm;
}
void set (int num1, int num2)
{
fz = num1;
fm = num2;
}
fra operator+(fra a)
{
int fm1 = fm * a.fm;
int fz1 = fz * a.fm + a.fz * fm;
fra temp;
temp.set(fz1, fm1);
return temp;
}
fra operator-(fra a)
{
int fm1 = fm * a.fm;
int fz1 = fz * a.fm - a.fz * fm;
fra temp;
temp.set(fz1, fm1);
return temp;
}
fra operator*(fra a)
{
int fm1 = fm * a.fm;
int fz1 = fz * a.fz;
fra temp;
temp.set(fz1, fm1);
return temp;
}
fra operator/(fra a)
{
int fm1 = fm * a.fz;
int fz1 = fz * a.fm ;
fra temp;
temp.set(fz1, fm1);
return temp;
}
void pri()
{
cout << "fraction=" << fz << "/" << fm << endl;
}
};
int main()
{
int num1;
int num2;
int num3;
int num4;
fra p3;
cin >> num1 >> num2 >> num3 >> num4;
fra p1;
fra p2;
p1.set(num1, num2);
p2.set(num3, num4);
p3 = p1 + p2;
p3.pri();
p3 = p1 - p2;
p3.pri();
p3 = p1 * p2;
p3.pri();
p3 = p1 / p2;
p3.pri();
return 0;
}