题目描述
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个和第2个Fraction对象的分子和分母值。
输出
每行依次分别输出加减乘除计算后的Fraction对象(直接输出分数值,不需要约简)。
样例查看模式
正常显示查看格式
输入样例1 <-复制
输出样例1
#include<iostream>
using namespace std;
// 定义Fraction类
class Fraction
{
private:
int fz, fm;
int commonDivisor(); // 计算最大公约数
void contracted(); // 分数化简
public:
Fraction() { fz = 0; fm = 1; }
Fraction(int z, int m)
{
fz = z;
fm = m;
}
Fraction(Fraction& f)
{
fz = f.getz();
fm = f.getm();
};
int getz()
{
return fz;
}
int getm()
{
return fm;
}
Fraction operator+(Fraction& f1)
{
int m = fm * f1.fm;
int z = fz * f1.fm + f1.fz * fm;
Fraction f(z, m);
return f;
}
Fraction operator-(Fraction& f1)
{
int m = fm * f1.fm;
int z = fz * f1.fm - f1.fz * fm;
Fraction f(z, m);
return f;
}
Fraction operator*(Fraction& f1)
{
int z = fz * f1.fz;
int m = fm * f1.fm;
Fraction f(z, m);
return f;
}
Fraction operator/(Fraction& f1)
{
int z = fz * f1.fm;
int m = fm * f1.fz;
Fraction f(z, m);
return f;
}
void set(int = 0, int = 1);
void disply()
{
cout << "fraction=";
if (fz < 0 && fm < 0)
{
cout << -fz << "/" << -fm << endl;
}
else if (fz > 0 && fm < 0)
{
cout << -fz << "/" << -fm << endl;
}
else
{
cout << fz << "/" << fm << endl;
}
}
};
//直接输出分数值,不需要约简
int main()
{
int z1, z2, m1, m2;
cin >> z1 >> m1;
cin >> z2 >> m2;
Fraction f1(z1, m1);
Fraction f2(z2, m2);
Fraction f3;
f3 = f1 + f2;
f3.disply();
f3 = f1 - f2;
f3.disply();
f3 = f1 * f2;
f3.disply();
f3 = f1 / f2;
f3.disply();
return 0;
}