
# Problema 1 : com uso de epsilon

# Dado x (no. real) e epsilon (no. real bem pequeno),
# calcular uma aproximacao para exp(x):
# exp (x) = 1 + x + x^2/2! + x^3/3! + ...
#
# Fazer a somatoória enquanto o valor asoluto do termo e'maior que epsilon.
#
""""
def main():
    x = float(input("Digite o valor de x (real positivo): "))
    epsilon = float(input("Digite o valor epsilon: "))
    termo = 1.0
    soma = 1.0
    print("soma = ", soma)
    k = 1
    while abs(termo) > epsilon:
        termo = termo * x / k
        soma = soma + termo
        k = k + 1
        print("soma = ", soma)
    print("soma = ", soma)    
# -----
main() 

"""
# Problema 2 : 
# Outra variante: a iteração continua enquanto a soma esta' mudando.
# Ou seja, quando nao fizer mais diferenca, parar a iteracao

def main():
    x = float(input("Digite o valor de x (real positivo): "))
    termo = 1.0
    soma = 0.0
    k = 1
    while soma != soma + termo:
        soma = soma + termo
        termo = termo * x / k
        k = k + 1 
        print("soma parcial = ", soma)
    print("soma final = ", soma)
# -----
main() 

## O programa abaixo e' equivalente. 

"""
def main():
    x = float(input("Digite o valor de x (real positivo): "))
    termo = 1.0
    soma = 0.0
    k = 1
    while soma != soma + termo:
        soma += termo
        termo *= x / k
        k += 1 
        print("soma parcial = ", soma)
    print("soma final = ", soma)    
# -----
main() 
"""
