Home | ProblemSet | Standing | Status | Statistics |
Problem J: 分数类之三
Time Limit: 1 Sec Memory Limit: 2 MBSubmit: 308 Solved: 224
[ Submit][ Status]
Description
一个分数类(Fraction)对象由两部分组成,分别是分子(numerator)和分母(denominator)。分子和分母均为整数类(Integer)对象,用以存储一个整型数值。
用C++编写Fraction类和Integer类来完成代码,调用格式见“Append Code”。
Fraction::numerator()取得分子数值。
Fraction:: denominator ()取得分母数值。
Integer::value()取得整数值。
Fraction类和Integer类的构造函数,根据题意设计。
在Fraction类上设计乘法运算,即分子乘分子、分母乘分母,且不必进行约分。
Input
输入为多组。每组包括分子分母两个整数。
Output
按格式输出分数。
Sample Input
3 5 5 3
Sample Output
15/15=1 15/3=5 15/3=5 25/3=8.33333 25/3=8.33333
HINT
Append Code
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
class Integer
{public:
int x;
Integer(){}
Integer(int nn):x(nn){}
Integer(Integer& dd){this->x=dd.x;}
int value()
{return x;}
};
class Fraction
{public:
Integer n,d;//分子、分母
Fraction(Integer nn,Integer dd):n(nn),d(dd){}
Fraction(Fraction& k){this->n=k.n;this->d=k.n;}
Fraction(){}
Integer& numerator(){return n;}
Integer& denominator(){return d;}
double value(){return (double)1.0*n.x/d.x;}
};
Fraction operator*(Fraction& la,Fraction& ffa){
Fraction fa;fa.n.x=la.n.x;fa.d.x=la.d.x;
fa.n.x*=ffa.n.x;fa.d.x*=ffa.d.x;return fa;
}
Fraction operator*(Fraction& la,Integer& ia){
Fraction fa;fa.n.x=la.n.x;fa.d.x=la.d.x;
fa.n.x*=ia.x;return fa;
}
Fraction operator*(Integer& ia,Fraction& ffa){
Fraction fa;fa.n.x=ffa.n.x;fa.d.x=ffa.d.x;
fa.n.x*=ia.x;return fa;
}
Fraction operator*(int& ia,Fraction& ffa){
Fraction fa;fa.n.x=ffa.n.x;fa.d.x=ffa.d.x;
fa.n.x*=ia;return fa;
}
Fraction operator*(Fraction& ffa,int& ia){
Fraction fa;fa.n.x=ffa.n.x;fa.d.x=ffa.d.x;
fa.n.x*=ia;return fa;
}
int main()
{
int n, d, nn, dd;
while(cin >> n >> d)
{
cin >> nn >> dd;
Integer num(n), den(d), nnum(nn), dden(dd);
Fraction f(num, den), ff(nnum, dden);
f = ff * f;
cout << f.numerator().value() << "/" << f.denominator().value() << "=" << f.value() << endl;
f = ff * num;
cout << f.numerator().value() << "/" << f.denominator().value() << "=" << f.value() << endl;
f = num * ff;
cout << f.numerator().value() << "/" << f.denominator().value() << "=" << f.value() << endl;
f = ff * nn;
cout << f.numerator().value() << "/" << f.denominator().value() << "=" << f.value() << endl;
f = nn * ff;
cout << f.numerator().value() << "/" << f.denominator().value() << "=" << f.value() << endl;
}
}