Primeira vez aqui? Seja bem vindo e cheque o FAQ!
x

Soma de frações

+1 voto
146 visitas
perguntada Jun 1, 2017 em Ciência da Computação por danielcajueiro (5,251 pontos)  

Considere a representação de uma fração utilizando um vetor de 2 posições.
Por exemplo \(\frac{1}{2}\) pode ser representado por \(\left[\begin{array}{c}1 \\2 \\
\end{array}\right]\). Escreva um código que usando essa representação calcule soma e subtração de frações. Favor explicitar com cuidado os detalhes.

Compartilhe

1 Resposta

+1 voto
respondida Jun 1, 2017 por Caue (226 pontos)  
selecionada Jun 1, 2017 por danielcajueiro
 
Melhor resposta

Em primeiro lugar, definimos a função que calcula o mdc entre dois inteiros, possibilitando a posterior simplificação das frações resultantes da soma e da subtração.

O passo seguinte é definir a função soma.

A função subtração aproveita a função soma, invertendo o sinal da segunda fração.

def mdc(a, b):
    return a if b == 0 else mdc(b, a % b)


def soma(f1, f2):
    _mdc = mdc(f1[1], f2[1])
    return (f1[0] * f2[1] + f2[0] * f1[1]) // _mdc, f1[1] * f2[1] // _mdc


def subtracao(f1, f2):
    return soma(f1, (-f2[0], f2[1]))


x = (1, 2)
w = (-1, 21)
z = (4, 7)

print(soma(x, z))
print(subtracao(x, z))
print(soma(w, z))
print(subtracao(w, z))

Observações:

  • Foi assumido que as funções sempre são duplas de inteiros. Para uma solução mais cuidadosa, é indicado usar assert para garantir a adequação dos parâmetros.
  • Em Python, há vantagem ao usar dupla para representar as frações em vez de usar lista: As tuplas são objetos imutáveis.
...