1
resposta

Onde está meu erro

Meu código possui um erro mas não consigo resolve-lo, alguém poderia me explicar onde está meu erro? Obs: Se poderem dar um feedback sobre legibilidade e outras dicas, sou todo ouvidos!

def boas_vindas
    puts "Olá"
    puts "Qual o seu nome"
    nome = gets
    print "\n\n"
    print "Olá #{nome.strip} é um prazer te conhecer"
    print "\n\n"
end

def menu_opcao

    puts"Agora esolha uma das opções"
    puts "Escolha:"
    puts "1 - adicao: "
    puts "2 - subtração: "
    puts "3 - multiplicação: "
    puts "4 - divisão: "
    puts "5 - resto da divisão: "
    escolha = gets.to_i
end

def menu_calculadora
    puts "Essa é a sua calculadora"
    puts "Entre com dois valores para realizarmos algumas operações!"
end

def mensagem_final
    puts "Obrigado por testa meu codigo, obrigado por tudo!"
    puts "fim do programa"

end

def soma (x, y)
    puts "A soma de #{x} e #{y} é:"
    resultado = x + y
end

def subtracao (x, y)
    puts "A subtracao de #{x} e #{y} é:"
    resultado = x - y
end

def multiplicacao(x, y)
    puts "O resultado da multiplicacao de #{x} e #{y} é:"
    resultado = x * y
end

def divisao (x, y)
    puts "A divisão de #{x} e #{y} é:"
    resultado = x / y
end

def resto (x, y)
    puts "O resto da divisão de #{x} e #{y} é:"
    resultado = x % y
end

def calculadora (escolha, x, y)

case escolha
    when 1
        soma
        calculadora
    when 2
        subtracao 
        calculadora
    when 3
        multiplicacao
        calculadora
    when 4
        divisao 
        calculadora
    when 5
        resto
        calculadora
    else 6
        puts "Sair? (Sim ou Não)"
        resposta = gets.upcase
        if resposta == "SIM"
            mensagem_final
        else
            puts"Escolha outra opção do menu"
            menu_opcao
            calculadora
        end
    end
end

boas_vindas
menu_calculadora
x = gets.to_i
y = gets.to_i
escolha = menu_opcao
calculadora
1 resposta

Falai Gabriel, tudo certo? Ao utilizar "else" na sua declaração "case", é um desvio para quando você não tem mais valores mapeados, ou seja, se vc quiser atribuir o valor 6, ele deve estar contido em um "when".

...
case escolha
        ...
        else
        ...
end

Espero ter ajudado.