Home | ProblemSet | Standing | Status | Statistics |
Problem I: 分数类之二
Time Limit: 1 Sec Memory Limit: 2 MBSubmit: 445 Solved: 295
[Submit][Status]
Description
一个分数类(Fraction)对象由两部分组成,分别是分子(numerator)和分母(denominator)。分子和分母均为整数类(Integer)对象,用以存储一个整型数值。
用C++编写Fraction类和Integer类来完成代码,调用格式见“Append Code”。
Fraction::numerator()取得分子数值。
Fraction:: denominator ()取得分母数值。
Integer::value()取得整数值。
Fraction类和Integer类的构造函数,根据题意设计。
在Fraction类上设计递增运算(前置++和后置++),每次运算数值加1。如,“1/2”递增运算后变为“3/2”。
Input
输入为多组。每组包括分子分母两个整数。
Output
Sample Input
3 5 5 3
Sample Output
8/5 8/5=1.6 8/5 13/5=2.6 8/3 8/3=2.66667 8/3 11/3=3.66667
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(int a,int b){
this->n.x=a;this->d.x=b;
}
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++()//前置
{n.x+=d.x;
return *this;
}
Fraction operator++(int)
{int a=this->n.x,b=this->d.x;
Fraction kk(a,b);
this->n.x+=this->d.x;
return kk;
}
void print(){
cout<<n.x<<"/"<<d.x<<endl;
}
};
int main()
{
int n, d;
while(cin >> n >> d)
{
Integer num(n), den(d);
Fraction f(num, den);
(++f).print();
cout << f.numerator().value() << "/" << f.denominator().value() << "=" << f.value() << endl;
(f++).print();
cout << f.numerator().value() << "/" << f.denominator().value() << "=" << f.value() << endl;
}
}