Solução Soma de Frações

Código de Roger Benet, comentários de Rogério Júnior

A primeira coisa a fazermos é calcular o valor de \frac{a}{b}+\frac{c}{d}. Para colocarmos toda a equação em uma mesma base, multiplicaremos o numerador e o denominador da primeira fração pela base da segunda, d, e faremos o mesmo na segunda, com a base da primeira, b. Agora, o valor que queremos calcular é:

\frac{ad}{bd}+\frac{bc}{bd} = \frac{ad+bc}{bd}

Apesar de termos encontrado uma fração que tem o valor da responta, não podemos imprimir os valores de seu numerador e denominador pois ela pode não estar em sua forma irredutível. Para que cheguemos nessa forma, precisamos eliminar todos os divisores comuns entre numerador e denominador, e fazemos isso dividindo ambos os números pelo MDC entre eles.

O cálculo do MDC entre dois números é uma tarefa simples que todo programador deve conhecer: o Algoritmo de Euclides. Vamos declarar a função int gcd(int x, int y) que calcula o valor de MDC(x,y). Para garantirmos que y é o maior número, trocaremos os valores de e y (podemos usar o swap) se y<x. Se for múltiplo de x, então MDC(x,y)=y, logo, retornamos y. Caso contrário, MDC(x,y) será o MDC entre x e o resto que y deixa na divisão por ("return gcd(x, y%x);").

Segue a adaptação do código do nosso leitor Roger Benet como solução ao problema proposto: