E27653: Fraction类
http://cs101.openjudge.cn/pctbook/E27653/
请练习用OOP方式实现。
思路:建立一个分数类,定义分数的定义,化简,运算和输出,用时约30分钟(主要用来学习什么是类)
cpp
//该题练习使用了一下类
#include <iostream>
using namespace std;
//最大公约数
int gcd(int a, int b)
{
if (b == 0)
{
return a;
}
return gcd(b, a % b);
}
//实现分数相加,化简的类
class Fraction
{
private:
int numerator; //分子
int denominator; //分母
public:
Fraction(int numerator, int denominator)
{
this->numerator = numerator;
this->denominator = denominator;
simplify();
}
//化简
void simplify()
{
int g = gcd(this->numerator, this->denominator);
this->numerator /= g;
this->denominator /= g;
}
//定义分数相加
Fraction operator+(Fraction& f)
{
int numerator = this->numerator * f.denominator + f.numerator * this->denominator;
int denominator = this->denominator * f.denominator;
simplify();
return Fraction(numerator, denominator);
}
//输出
void show()
{
cout << this->numerator << "/" << this->denominator << endl;
}
};
int main()
{
int numerator_1, denominator_1, numerator_2, denominator_2;
cin >> numerator_1 >> denominator_1 >> numerator_2 >> denominator_2;
//两个分数相加及化简
Fraction f1(numerator_1, denominator_1);
Fraction f2(numerator_2, denominator_2);
Fraction f3 = f1 + f2;
f3.show();
}