/* File: sommaraz.c */
/* Time-stamp: "2002-04-17 15:37:03 calvanes" */
/* Scopo: uso di funzioni */

/* Calcolo della somma di due numeri razionali, forniti in input tramite
   numeratore e denominatore. */

#include <stdio.h>

int massimoComunDivisore (int n1, int n2);

int minimoComuneMultiplo (int n1, int n2);


int main(void)
{ 
  int num1, den1, num2, den2 ;
  int num_sum, den_sum, semplifica;

  printf("Inserire quattro interi [num1 den1 num2 den2]\n");
  scanf("%d%d%d%d", &num1, &den1, &num2, &den2);

  den_sum = minimoComuneMultiplo(den1, den2);         /* denominatore comune */
  num_sum = num1*(den_sum/den1) + num2*(den_sum/den2);
	
  semplifica = massimoComunDivisore(num_sum, den_sum);
  if (semplifica != 1) {
    num_sum /= semplifica;
    den_sum /= semplifica;
  }
  printf("%d/%d + %d/%d = %d/%d\n", num1, den1, num2, den2, num_sum, den_sum);

  scanf("%*[^\n]"); getchar();
  printf("\nPremi [INVIO] per terminare\n");
  getchar();

  return 0;
}

int minimoComuneMultiplo(int n1, int n2)
{
  return n1 * n2 / massimoComunDivisore(n1, n2);
}

int massimoComunDivisore(int n1, int n2)
{
  int resto, a, b;
	
  a = n1;
  b = n2;
  while (b > 0) {
    resto = a % b;
    a = b;
    b = resto;
  }

  return a;
}