#include<iostream>
#include<stdio.h>
using namespace std;
class rational
{
int n,d;
public:
rational() : n(1), d(1) {};
~rational(){};
void getData()
{
cout<<"\nEnter a numerator: ";
cin>>n;
cout<<"Enter a denominator: ";
cin>>d;
cout<<endl;
while(d==0)
{
cout<<"Please enter a denominator: ";
cin>>d;
}
while(d<0)
{
n *= -1;
d *= -1;
}
}
int GCD(int n1, int remainder)
{
if(remainder==0)
return(n1);
else { return(GCD(remainder,n1%remainder)); }
}
void reduce(int &n,int &d)
{
int rdc = 0;
if(d>n)
rdc = GCD(d,n);
else if(d<n)
rdc = GCD(n,d);
else
rdc = GCD(n,d);
n /= rdc;
d /= rdc;
cout<<n<<"/"<<d<<endl;
}
void operator +(rational c1)
{
rational temp;
temp.n=(n*c1.d)+(c1.n*d);
temp.d=c1.d*d;
reduce(temp.n,temp.d);
}
void operator -(rational c1)
{
rational temp;
temp.n=(n*c1.d)-(c1.n*c1.d);
temp.d=c1.d*d;
reduce(temp.n,temp.d);
}
void operator *(rational c1)
{
rational temp;
temp.n=n*c1.n;
temp.d=d*c1.d;
reduce(temp.n,temp.d);
}
};
int main()
{
rational c1, c2;
int n,x;
char cr;
cin>>x;
for(int contador=0; contador<x; contador++){
if(contador<x){
c1.getData();
c2.getData ();
}
}
cin>>cr;
switch(cr)
{
case '+':
c1+c2;
cin.get();
return 0;
case '-':
c1-c2;
cin.get();
return 0;
case '*':
c1*c2;
cin.get();
return 0;
default:
cout<<endl;
return 0;
}
cin.get();
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPHN0ZGlvLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpjbGFzcyByYXRpb25hbAp7CglpbnQgbixkOwpwdWJsaWM6CglyYXRpb25hbCgpIDogbigxKSwgZCgxKSB7fTsKCX5yYXRpb25hbCgpe307CgoJdm9pZCBnZXREYXRhKCkKCXsKCQljb3V0PDwiXG5FbnRlciBhIG51bWVyYXRvcjogIjsKCQljaW4+Pm47CgkJY291dDw8IkVudGVyIGEgZGVub21pbmF0b3I6ICI7CgkJY2luPj5kOwoJCWNvdXQ8PGVuZGw7CgoJCXdoaWxlKGQ9PTApCgkJewoJCQljb3V0PDwiUGxlYXNlIGVudGVyIGEgZGVub21pbmF0b3I6ICI7CgkJCWNpbj4+ZDsKCQl9CgoJCXdoaWxlKGQ8MCkKCQl7CgkJCW4gKj0gLTE7CgkJCWQgKj0gLTE7CgkJfQoJfQoKaW50IEdDRChpbnQgbjEsIGludCByZW1haW5kZXIpCnsKCWlmKHJlbWFpbmRlcj09MCkKCQlyZXR1cm4objEpOwoJZWxzZSB7IHJldHVybihHQ0QocmVtYWluZGVyLG4xJXJlbWFpbmRlcikpOyB9Cn0KCnZvaWQgcmVkdWNlKGludCAmbixpbnQgJmQpCnsKCWludCByZGMgPSAwOwoJaWYoZD5uKQoJCXJkYyA9IEdDRChkLG4pOwoJZWxzZSBpZihkPG4pCgkJcmRjID0gR0NEKG4sZCk7CgllbHNlCgkJcmRjID0gR0NEKG4sZCk7CgluIC89IHJkYzsKCWQgLz0gcmRjOwoJY291dDw8bjw8Ii8iPDxkPDxlbmRsOwp9Cgp2b2lkIG9wZXJhdG9yICsocmF0aW9uYWwgYzEpCnsKcmF0aW9uYWwgdGVtcDsKdGVtcC5uPShuKmMxLmQpKyhjMS5uKmQpOwp0ZW1wLmQ9YzEuZCpkOwpyZWR1Y2UodGVtcC5uLHRlbXAuZCk7Cn0KCnZvaWQgb3BlcmF0b3IgLShyYXRpb25hbCBjMSkKewpyYXRpb25hbCB0ZW1wOwp0ZW1wLm49KG4qYzEuZCktKGMxLm4qYzEuZCk7CnRlbXAuZD1jMS5kKmQ7CnJlZHVjZSh0ZW1wLm4sdGVtcC5kKTsKfQoKdm9pZCBvcGVyYXRvciAqKHJhdGlvbmFsIGMxKQp7CnJhdGlvbmFsIHRlbXA7CnRlbXAubj1uKmMxLm47CnRlbXAuZD1kKmMxLmQ7CnJlZHVjZSh0ZW1wLm4sdGVtcC5kKTsKfQoKfTsKCmludCBtYWluKCkKewoJcmF0aW9uYWwgYzEsIGMyOwoJaW50IG4seDsKCWNoYXIgY3I7CgljaW4+Png7Cglmb3IoaW50IGNvbnRhZG9yPTA7IGNvbnRhZG9yPHg7IGNvbnRhZG9yKyspewoJCQlpZihjb250YWRvcjx4KXsKCQkJCQkJCWMxLmdldERhdGEoKTsKCQkJCQkJCWMyLmdldERhdGEgKCk7CgkJCQkJfQoJCQl9CgljaW4+PmNyOwoJc3dpdGNoKGNyKQoJewoJCWNhc2UgJysnOgoJCQljMStjMjsKCQkJY2luLmdldCgpOwoJCXJldHVybiAwOwoJCWNhc2UgJy0nOgoJCQljMS1jMjsKCQkJY2luLmdldCgpOwoJCXJldHVybiAwOwoJCWNhc2UgJyonOgoJCQljMSpjMjsKCQkJY2luLmdldCgpOwoJCXJldHVybiAwOwoJCWRlZmF1bHQ6CgkJCWNvdXQ8PGVuZGw7CgkJcmV0dXJuIDA7Cgl9CgpjaW4uZ2V0KCk7CnJldHVybiAwOwp9Cg==