Пример #1
0
/*
 * 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);
}
Пример #2
0
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");
}