c++实现分数类的化简,相加
#include<iostream>
using namespace std;
class fraction
{
public:
int x;
int y;
public:
fraction(int con_x, int con_y);
void printf();
void hj();
~fraction()
{
}
friend bool operator==(const fraction&c, const fraction &d);
friend bool operator!=(const fraction&c, const fraction &d);
fraction operator+(const fraction &a);
};
fraction::fraction(int con_x, int con_y)
{
x = con_x;
y = con_y;
}
void fraction:: printf()
{
cout << "分数为:" << y << "/" << x << endl;
}
void fraction::hj()
{
int a = x;
int b = y;
if (y < x)
{
cout << "分数为:" << y << "/" << x << endl;
}
else if (y%x == 0)
{
cout << "分数为" << y / x << endl;
}
else if (y > x)
{
int temp = a;
a = b;
b = temp;
while (b != 0)
{
temp = a % b;
a = b;
b = temp;
}
x = x / a;
y = y / a;
printf();
}
}
fraction fraction::operator+(const fraction &a)
{
return fraction(x*(a.x), y*(a.x) + x*(a.y));
}
bool operator==(const fraction&c, const fraction &d)
{
return c.y / c.x == d.y / d.x;
}
bool operator!=(const fraction&c, const fraction &d)
{
return c.y / c.x != d.y / d.x;
}
int main()
{
fraction a(1, 2);
a.hj();
fraction b(6, 9);
b.hj();
fraction c = a + b;
c.hj();
if (a == b)
{
cout << "两个分数相等" << endl;
}
else if (a != b)
{
cout << "两个分数不相等" << endl;
}
system("pause");
return 0;
}