#include<iostream>
using namespace std;
struct phanso
{
int tuso;
int mauso;
};
void nhappheptoan(char& pheptoan)
{
cout << "Hay nhap phep toan(+, -, *, /): ";
cin >> pheptoan;
cin.ignore(100, '\n');
}
void nhap2phanso(phanso &A, phanso &B)
{
cout << "Tu so A: "; cin >> A.tuso;
cout << "Mau so A: "; cin >> A.mauso;
cout << "Tu so B: "; cin >> B.tuso;
cout << "Mau so B: "; cin >> B.mauso;
}
int lamtronphanso(phanso A) //thuật toán euclid
{
int r;
while (A.mauso != 0)
{
r = A.tuso % A.mauso;
A.tuso = A.mauso;
A.mauso = r;
}
return A.tuso;
}
void tinhtoan(char pheptoan, phanso A, phanso B)
{
phanso C;
switch (pheptoan)
{
case '+':
{
C = { A.tuso * B.mauso + A.mauso * B.tuso, A.mauso * B.mauso};
cout << C.tuso / lamtronphanso(C) << "/" << C.mauso / lamtronphanso(C) << endl;
break;
}
case '-':
{
C = { A.tuso * B.mauso - A.mauso * B.tuso, A.mauso * B.mauso};
cout << C.tuso / lamtronphanso(C) << "/" << C.mauso / lamtronphanso(C) << endl;
break;
}
case '*':
{
C = { A.tuso * B.tuso, A.mauso * B.mauso};
cout << C.tuso / lamtronphanso(C) << "/" << C.mauso / lamtronphanso(C) << endl;
break;
}
case '/':
{
C = { A.tuso * B.mauso, A.mauso * B.tuso};
cout << C.tuso / lamtronphanso(C) << "/" << C.mauso / lamtronphanso(C) << endl;
break;
}
default:
break;
}
}
int main()
{
phanso A,B;
char pheptoan;
nhap2phanso(A, B);
nhappheptoan(pheptoan);
tinhtoan(pheptoan, A, B);
return 0;
}