#include
typedef struct {
int numerator;
int denominator;
} Fraction;
int gcd(int a, int b) {
if (b == 0) return a;
return gcd(b, a % b);
}
Fraction add(Fraction f1, Fraction f2) {
Fraction result;
result.numerator = f1.numerator * f2.denominator + f2.numerator * f1.denominator;
result.denominator = f1.denominator * f2.denominator;
return simplify(result);
}
Fraction subtract(Fraction f1, Fraction f2) {
Fraction result;
result.numerator = f1.numerator * f2.denominator - f2.numerator * f1.denominator;
result.denominator = f1.denominator * f2.denominator;
return simplify(result);
}
Fraction multiply(Fraction f1, Fraction f2) {
Fraction result;
result.numerator = f1.numerator * f2.numerator;
result.denominator = f1.denominator * f2.denominator;
return simplify(result);
}
Fraction divide(Fraction f1, Fraction f2) {
Fraction result;
result.numerator = f1.numerator * f2.denominator;
result.denominator = f1.denominator * f2.numerator;
return simplify(result);
}
Fraction simplify(Fraction f) {
int common_divisor = gcd(f.numerator, f.denominator);
f.numerator /= common_divisor;
f.denominator /= common_divisor;
return f;
}
void printFraction(Fraction f) {
printf("%d/%dn", f.numerator, f.denominator);
}
int main() {
Fraction f1 = {3, 4};
Fraction f2 = {2, 5};
Fraction result_add = add(f1, f2);
Fraction result_subtract = subtract(f1, f2);
Fraction result_multiply = multiply(f1, f2);
Fraction result_divide = divide(f1, f2);
printf("Addition: ");
printFraction(result_add);
printf("Subtraction: ");
printFraction(result_subtract);
printf("Multiplication: ");
printFraction(result_multiply);
printf("Division: ");
printFraction(result_divide);
return 0;
}