Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Não aceita o número real

void testarChuteDoUsuario(int numeroSecreto)
{
    int chute, tentativas;
    bool acertou = false;
    double  meusPontos, pontosPerdidos;
    meusPontos = 0;
    pontosPerdidos = 0;
    tentativas = 1;
    meusPontos = 1000;
    
   
    while(!acertou){
        escreve(1, "Chute um número: ");
        cin >> chute;
       
        if(chute > 0){
            if(chute == numeroSecreto){
                cout << "Parabéns, você acertou o número secreto em: " << tentativas << " tentativa(s)!\n";
                cout << "Total de pontos: " << meusPontos << " pontos!\n";
                acertou = true;
            }else {
                pontosPerdidos = (numeroSecreto - chute)/2;
                cout<<pontosPerdidos<<"\n";
                cout<<numeroSecreto<<"\n";
                cout<<chute<<"\n";
                
                
                
                if(chute > numeroSecreto){
                    escreve(1, "O chute é maior que o número secreto!");
                    meusPontos += pontosPerdidos;
                }else{
                    escreve(1, "O chute é menor que o número secreto!");
                     meusPontos -= pontosPerdidos;
                }
                tentativas++;
            }
        }else{
            escreve(1, "informe um número maior que 0");
        }
   }
}

Ele não aceita, por exemplo, 19.5

2 respostas

Já resolvi, fiz essa adaptação:

                pontosPerdidos = (numeroSecreto - chute);
                pontosPerdidos /= 2;

Mas, poderia me explicar o motivo de o original não funcionar?

solução!

Bom dia, Pedro! Tudo bem?

Fico feliz que tenha conseguido resolver o seu problema! Além disso, agradeço por compartilhar a solução desse problema aqui no fórum. Tenho certeza que ajudará outros alunos que enfrentarem esse tipo de situação.

Agora sobre a sua dúvida, o problema está no fato de que o seu código não aceita números reais (com casas decimais) como entrada para o chute do usuário. Isso ocorre porque a variável chute foi declarada como int, que é um tipo de dado que armazena apenas números inteiros.

Para permitir que o usuário insira números reais, você deverá alterar o tipo da variável chute de int para double. Isso permitirá que valores como 19.5 sejam aceitos como entrada.

Continue mergulhando em tecnologia e se tiver dúvidas, conte com o fórum.

Abraços e bons estudos!