06-构造与析构-
题目描述 用C++定义和实现一个分数类,并根据要求完成分数对象的运用 分数类包含分子和分母两个属性,操作包括: 1 . 各属性的get方法 2 . 构造函数,初始化分子分母 3 . 相加运算,该运算接收两个分数对象的分子和分母,然后进行分数相加,结果保存在自己的分子和分母中,运算规则为:假设当前分数为A0/B0,接收两个分数A1/B1和A2/B2,相加结果,A0=A1×B2 + A2×B1,B0=B1×B2 4 . 相乘运算,该运算接收两个分数对象的分子和分母,然后进行分数相乘,运算规则为:假设当前分数为A0/B0,接收两个分数A1/B1和A2/B2,然后进行分数相乘,A0=A1×A2,B0= B1×B2 5 . 显示函数,显示格式:分数/分母 在主函数中定义若干个分数对象,并使用分数对象进行运算。 提示:每个分数运算都包含三个分数对象,例如要做分数A和B的相加,那么除了A和B还要定义C,通过调用C的相加方法,把A和B的分子分母传递给C运算,结果保存在C中 注意:提交代码时必须用注释划分出三个区域:类定义、类实现、主函数,如下
输入 第一行输入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 fraction
{
int mole,deno;
public:
fraction();
fraction(int m,int d);
int getmole();
int getdeno();
void setmole(int m);
void setdeno(int d);
void print();
void add(fraction f);
void multi(fraction f);
};
fraction::fraction()
{mole=0;deno=0;}
fraction::fraction(int m,int d)
{mole=m;deno=d;}
int fraction::getmole()
{return mole;}
int fraction::getdeno()
{return deno;}
void fraction::setdeno(int d)
{deno=d;}
void fraction::setmole(int m)
{mole=m;}
void fraction::print()
{
if((deno<0&&mole<0)||deno<0)
{
deno=0-deno;
mole=0-mole;
}
cout<<mole<<"/"<<deno<<endl;
}
void fraction::add(fraction f)
{
fraction ff;
ff.setmole(mole*f.deno+f.mole*deno) ;
ff.setdeno(deno*f.deno);
ff.print();
}
void fraction::multi(fraction f)
{
fraction ff;
ff.setmole(mole*f.mole);
ff.setdeno(deno*f.deno);
ff.print();
}
int main()
{
int t;
cin>>t;
while(t--)
{
int m1,d1,m2,d2;
cin>>m1>>d1>>m2>>d2;
fraction f1(m1,d1);
fraction f2(m2,d2);
cout<<f1.getmole()<<"/"<<f1.getdeno()<<" "<<f2.getmole()<<"/"<<f2.getdeno()<<endl;
f1.add(f2);
f1.multi(f2);
}
return 0;
}
|