#include
#include
#include
struct fraction
{
int numerator;
int denominator;
};
void read_line(struct fraction* read);
void GCD(struct fraction* p);
void additioin(struct fraction* p1, struct fraction* p2);
void subtraction(struct fraction* p1, struct fraction* p2);
void multiplication(struct fraction* p1, struct fraction* p2);
void division(struct fraction* p1, struct fraction* p2);
int main(void)
{
struct fraction f1, f2;
struct fraction* p1 = &f1, * p2 = &f2;
(void)read_line(p1);
(void)read_line(p2);
(void)GCD(p1);
(void)GCD(p2);
(void)additioin(p1, p2);
(void)subtraction(p1, p2);
(void)multiplication(p1, p2);
(void)division(p1, p2);
return 0;
}
void read_line(struct fraction* p)
{
int num, denom;
printf("Please enter numerator and denominator:");
scanf_s("%d/%d", &num, &denom);
p->numerator = num;
p->denominator = denom;
return;
}
void GCD(struct fraction* p)
{
int m = p->numerator, n = p->denominator;
int i = 0, x;
if (n > m)
{
x = n;
n = m;
m = x;
}
while (n != 0)
{
i = n;
n = m % n;
m = i;
}
p->numerator /= m;
p->denominator /= m;
return;
}
void additioin(struct fraction* p1, struct fraction* p2)
{
int num, denom;
denom = (p1->denominator) * (p2->denominator);
num = (p1->numerator * p2->denominator) + (p2->numerator * p1->denominator);
printf("Addition: %d/%dn", num, denom);
return;
}
void subtraction(struct fraction* p1, struct fraction* p2)
{
int num, denom;
denom = (p1->denominator) * (p2->denominator);
num = (p1->numerator * p2->denominator) - (p2->numerator * p1->denominator);
printf("Subtraction: %d/%dn", num, denom);
return;
}
void multiplication(struct fraction* p1, struct fraction* p2)
{
int num, denom;
denom = (p1->denominator) * (p2->denominator);
num = (p1->numerator) * (p2->numerator);
struct fraction result = { .numerator = num,.denominator = denom };
struct fraction* p3 = &result;
(void)GCD(p3);
printf("Multiplication: %d/%dn",result.numerator,result.denominator);
return;
}
void division(struct fraction* p1, struct fraction* p2)
{
int num, denom;
denom = (p1->denominator) * (p2->numerator);
num = (p1->numerator) * (p2->denominator);
struct fraction result = { .numerator = num,.denominator = denom };
struct fraction* p3 = &result;
(void)GCD(p3);
printf("Division: %d/%dn", result.numerator, result.denominator);
return;
}



