Home | ProblemSet | Standing | Status | Statistics |
Problem H: 分数类之一
Time Limit: 1 Sec Memory Limit: 2 MBSubmit: 812 Solved: 335
[Submit][Status]
Description
一个分数类(Fraction)对象由两部分组成,分别是分子(numerator)和分母(denominator)。分子和分母均为整数类(Integer)对象,用以存储一个整型数值。
用C++编写Fraction类和Integer类来完成代码,调用格式见“Append Code”。
Fraction::numerator()取得分子数值。
Fraction:: denominator ()取得分母数值。
Integer::value()取得整数值。
Fraction类和Integer类的构造函数,根据题意设计。
Input
输入为多组。每组包括分子分母两个整数。
Output
按格式输出分数。
Sample Input
3 5 5 3
Sample Output
Integer 3 construction. Integer 5 construction. Integer 3 duplicate. Integer 5 duplicate. Fraction 3/5 construction. 3/5=0.6 Fraction 3/5 destruction. Integer 5 destruction. Integer 3 destruction. Integer 5 destruction. Integer 3 destruction. Integer 5 construction. Integer 3 construction. Integer 5 duplicate. Integer 3 duplicate. Fraction 5/3 construction. 5/3=1.66667 Fraction 5/3 destruction. Integer 3 destruction. Integer 5 destruction. Integer 3 destruction. Integer 5 destruction.
HINT
Append Code
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
class Integer
{public:
int x;
Integer(){}
Integer(int nn):x(nn){
cout<<"Integer "<<x<<" construction."<<endl;
}
Integer(Integer& dd){
this->x=dd.x;
cout<<"Integer "<<x<<" duplicate."<<endl;
}
int value()
{return x;
}
~Integer(){
cout<<"Integer "<<x<<" destruction."<<endl;
}
};
class Fraction
{public:
Integer n,d;//分子、分母
Fraction(Integer& nn,Integer& dd):n(nn),d(dd){
cout<<"Fraction "<<n.x<<"/"<<d.x<<" construction."<<endl;
}
Integer& numerator(){
return n;
}
Integer& denominator(){
return d;
}
double value()
{return (double)1.0*n.x/d.x;
}
~Fraction(){
cout<<"Fraction "<<n.x<<"/"<<d.x<<" destruction."<<endl;
}
};
int main()
{
int n, d;
while(cin >> n >> d)
{
Integer num(n), den(d);
Fraction f(num, den);
cout << f.numerator().value() << "/" << f.denominator().value() << "=" << f.value() << endl;
}
}