/* * c) Subtract the fraction f2 from the fraction f1. */ void test_part_c(void){ struct fraction diff, f1, f2; printf("Enter first fraction (a/b): "); scanf("%d / %d", &f1.numerator, &f1.denominator); printf("Enter second fraction (a/b): "); scanf("%d / %d", &f2.numerator, &f2.denominator); diff = subtract_fractions(f1, f2); diff = reduce_fraction(diff); printf("Difference of the fractions: %d/%d\n", diff.numerator, diff.denominator); }
void test_fraction(int numerator1, int denominator1, int numerator2, int denominator2, enum FRACTION_OPERATION operation, int mixed) { struct FRACTION a = make_fraction(numerator1, denominator1); struct FRACTION b = make_fraction(numerator2, denominator2); struct FRACTION c; char op; if (operation == foAdd) { c = add_fractions(&a, &b); op = '+'; } else if (operation == foSubtract) { c = subtract_fractions(&a, &b); op = '-'; } else { c = multiply_fractions(&a, &b); op = '*'; } printf("%i/%i %c %i/%i = %i/%i", a.numerator, a.denominator, op, b.numerator, b.denominator, c.numerator, c.denominator); if (mixed) { struct MIXED_FRACTION mixed = reduced_to_mixed(&c); printf(" ==> "); /* There's a whole number portion */ if (mixed.whole_number) printf("%i ", mixed.whole_number); /* There's a proper fraction portion */ if (mixed.proper_fraction.numerator) printf("%i/%i", mixed.proper_fraction.numerator, mixed.proper_fraction.denominator); if (!mixed.whole_number && !mixed.proper_fraction.numerator) printf("0"); } printf("\n"); }