#include <iostream>
#include “PhanSo.h”
using
namespace
std
;
PhanSo
operator
+
(
PhanSo
a
,
PhanSo
b
)
{
a
=
a
.
rutgon
(
)
;
b
=
b
.
rutgon
(
)
;
PhanSo
res
(
a
.
tuSo*
b
.
mauSo
+
a
.
mauSo*
b
.
tuSo
,
a
.
mauSo*
b
.
mauSo
)
;
res
=
res
.
rutgon
(
)
;
return
res
;
}
PhanSo
operator
–
(
PhanSo
a
,
PhanSo
b
)
{
return
PhanSo
(
a
.
rutgon
(
)
+
b
.
rutgon
(
)
*
–
1
)
.
rutgon
(
)
;
}
PhanSo
operator*
(
PhanSo
a
,
PhanSo
b
)
{
a
=
a
.
rutgon
(
)
;
b
=
b
.
rutgon
(
)
;
PhanSo
res
(
a
.
tuSo*
b
.
tuSo
,
a
.
mauSo*
b
.
mauSo
)
;
res
=
res
.
rutgon
(
)
;
return
res
;
}
PhanSo
operator
/
(
PhanSo
a
,
PhanSo
b
)
{
b
=
b
.
rutgon
(
)
;
return
PhanSo
(
a
.
rutgon
(
)
*
PhanSo
(
b
.
mauSo
,
b
.
tuSo
)
)
.
rutgon
(
)
;
}
bool
operator
==
(
PhanSo
a
,
PhanSo
b
)
{
return
(
a
.
tuSo*
b
.
mauSo
==
a
.
mauSo*
b
.
tuSo
)
;
}
bool
operator
!=
(
PhanSo
a
,
PhanSo
b
)
{
return
!
(
a
==
b
)
;
}
bool
operator
>
(
PhanSo
a
,
PhanSo
b
)
{
return
(
a
.
tuSo*
b
.
mauSo
>
a
.
mauSo*
b
.
tuSo
)
;
}
bool
operator
>=
(
PhanSo
a
,
PhanSo
b
)
{
return
(
a
>
b
||
a
==
b
)
;
}
bool
operator
<
(
PhanSo
a
,
PhanSo
b
)
{
return
(
a
.
tuSo*
b
.
mauSo
<
a
.
mauSo*
b
.
tuSo
)
;
}
bool
operator
<=
(
PhanSo
a
,
PhanSo
b
)
{
return
(
a
<
b
||
a
==
b
)
;
}
ostream
&
operator
<<
(
ostream
&
os
,
PhanSo
a
)
{
a
.
chuanhoa
(
)
;
if
(
a
.
mauSo
==
1
)
os
<<
a
.
tuSo
<<
endl
;
else
os
<<
a
.
tuSo
<<
“/”
<<
a
.
mauSo
<<
“\n”
;
return
os
;
}
istream
&
operator
>>
(
istream
&
is
,
PhanSo
&
a
)
{
is
>>
a
.
tuSo
>>
a
.
mauSo
;
if
(
a
.
mauSo
==
0
)
throw
“Nhap sai, mau so phai khac 0!!\n”
;
return
is
;
}
int
main
(
)
{
PhanSo
a
,
b
;
try
{
cin
>>
a
>>
b
;
cout
<<
“Cong = “
<<
a
+
b
;
cout
<<
“Tru = “
<<
a
–
b
;
cout
<<
“Nhan = “
<<
a*
b
;
cout
<<
“Chia = “
<<
a
/
b
;
}
catch
(
const
char
*
msg
)
{
cerr
<<
msg
<<
endl
;
}
system
(
“pause”
)
;
return
0
;
}