题目描述
用C++定义和实现一个分数类,并根据要求完成分数对象的运用
分数类包含分子和分母两个属性,操作包括
- 各属性的get方法
- 构造函数,初始化分子分母
- 相加运算,该运算接收两个分数对象的分子和分母,然后进行分数相加,结果保存在自己的分子和分母中,运算规则为:假设当前分数为A0/B0,接收两个分数A1/B1和A2/B2,相加结果,A0=A1×B2+ A2×B1,B0=B1×B2
- 相乘运算,该运算接收两个分数对象的分子和分母,然后进行分数相乘,运算规则为:假设当前分数为A0/B0,接收两个分数A1/B1和A2/B2,然后进行分数相乘,A0=A1×A2,B0=B1×B2
- 显示函数,显示格式:分数/分母
在主函数中定义若干个分数对象,并使用分数对象进行运算。
提示:每个分数运算都包含三个分数对象,例如要做分数A和B的相加,那么除了A和B还要定义C,通过调用C的相加方法,把A和B的分子分母传递给C运算,结果保存在C中
注意:提交代码时必须用注释划分出三个区域:类定义、类实现、主函数,如下
//-----类定义------
class XXX
{ // 写类定义代码
};
//----类实现------
void Process::XXX()
{ // 写类定义代码
};
//-----主函数-----
int main()
{
//写对象的创建和运行过程
return 0;
}
输入
第一行输入t表示有t个测试实例
第二行输入第一个分数的分子和分母,都用整数输入,都不为0
第三行输入第二个分数的分子和分母,都用整数输入,都不为0
依次类推输入其他实例的分数分子和分母
注意:如果分数是负数,负号在分子中输入,例如负的五分之三,则分子为-3,分母为5 输出输出每个实例的运算结果,每个实例包含三行
第一行输出要运算的两个分数对象
第二行输出两个分数相加的结果,注意相加的运算、结果显示都要使用第三个对象的方法
第三行输出两个分数相乘的结果,注意相乘的运算、结果显示都要使用第三个对象的方法
样例输入
2
2 3
4 5
-3 4 5 6
样例输出
2/3 4/5
22/15
8/15
-3/4 5/6
2/24
-15/24
#include<iostream>
using namespace std;
class CFraction
{
private:
int fz, fm;
public:
CFraction(){
};
CFraction(int fz_val, int fm_val){
fz=fz_val;
fm=fm_val;
}
CFraction add(const CFraction &r,const CFraction &s){
fz=s.fz*r.fm+r.fz*s.fm;
fm=s.fm*r.fm;
}
CFraction mul(const CFraction &r,const CFraction &s){
fz=s.fz*r.fz;
fm=s.fm*r.fm;
if((fz>0&&fm<0)||(fz<0&&fm<0)){
fz=-fz;
fm=-fm;
}
}
void print(){
cout<<fz<<"/"<<fm;
}
};
int main(){
int fz,fm,t;
cin>>t;
CFraction ccc;
while(t--){
cin>>fz>>fm;
CFraction aaa(fz,fm);
cin>>fz>>fm;
CFraction bbb(fz,fm);
aaa.print();
cout<<" ";
bbb.print();
cout<<endl;
ccc.add(aaa,bbb);
ccc.print();
cout<<endl;
ccc.mul(aaa,bbb);
ccc.print();
cout<<endl;
}
return 0;
}