TOPIC

Runtime Error -Python. Porém exemplos funcionam

Aléxia Krüger asked 1 year ago

Alguém pode me ajudar esclarecendo porque estou recebendo runtime error? Fiz os testes, inclusive do uDebug e deu tudo certo.

from math import gcd

def add():
    num = (N1 * D2 + N2 * D1)
    den = (D1 * D2)
    mdc = gcd(num, den)
    result = "{}/{} = {}/{}".format(num, den, (num // mdc), (den // mdc))
    return result

def sub():
    num = (N1 * D2 - N2 * D1)
    den = (D1 * D2)
    mdc = gcd(num, den)
    result = "{}/{} = {}/{}".format(num, den, (num // mdc), (den // mdc))
    return result

def mult():
    num = (N1 * N2)
    den = (D1 * D2)
    mdc = gcd(num, den)
    result = "{}/{} = {}/{}".format(num, den, (num // mdc), (den // mdc))
    return result

def div():
    num = (N1 * D2)
    den = (N2 * D1)
    mdc = gcd(num, den)
    result = "{}/{} = {}/{}".format(num, den, (num // mdc), (den // mdc))
    return result

def define_operacao(operador):
    switcher = {'+': add(),
                '-': sub(),
                '*': mult(),
                '/': div()
                }

    return switcher.get(operador)

casos_teste = int(input())
i = 0
while i < casos_teste:
    i += 1
    N1, barra1, D1, op, N2, barra2, D2 = input().split()
    N1, D1, N2, D2 = int(N1), int(D1), int(N2), int(D2)

    print(define_operacao(op))

Remember not post solutions. Your post may be reviewed by our moderators.

  • Daniel Girotto replied 8 months ago

    Tive o mesmo problema, descobri que a causa é o gcd então implementei o Algoritmo de Euclides para determinação de MDC.

    def mdc_euclidiano(dividendo, divisor):
        resto = dividendo % divisor
    
        while resto != 0:
            dividendo, divisor, mdc = divisor, resto, resto
    
            resto = dividendo % divisor
        else:
            return divisor
    
        return mdc