5
respostas

O meu esta imprimindo a quantidade errada de tentativas, adicionando um.

#include <iostream>
using namespace std;

int main(){

    cout <<"******************************" << endl;
    cout <<"*Bem vindo ao jogo da advinhaçao!*" << endl;
    cout <<"******************************" << endl;

    cout << "Escolha o seu nivel de dificuldade: " << endl;
    cout << "Os niveis são: Facil(F), Medio(M) e Dificil(D)!" << endl;
    char nivel;
    cin >> nivel;

    int numero_tentativas;
    int acertou;
    const int numero_secreto = 45;

    int tentativas = 0;
    bool nao_acertou = true;

    double pontos = 1000.0;

    if(nivel == 'F'){

        numero_tentativas = 14;
    }

    else if(nivel == 'M'){

        numero_tentativas = 10;
    }

      else{

        numero_tentativas = 5;
    }


    for(tentativas = 1; tentativas <= numero_tentativas; tentativas++;){



    int chute;
    cout <<"Qual o seu chute?" << endl;
    cin >> chute;
    cout <<"O seu chute foi " << chute <<"!" << endl;

    double pontos_perdidos = abs(chute - numero_secreto)/2.0;
    pontos = pontos - pontos_perdidos;

    bool acertou = chute == numero_secreto;
    bool maior = chute > numero_secreto;
    bool menor = chute < numero_secreto;

    if(acertou){

        cout <<"Parabens, você acertou!" << endl;
        break;
        nao_acertou = false;

    }

     else if(maior){

        cout <<"Você errou, o seu chute foi maior!" << endl;
    }

     else{

        cout <<"Você errou, o seu chute foi menor" << endl;
    }

    }
     cout <<"**Fim de jogo!**" << endl;

    if(acertou){
     cout << "Você perdeu, tente novamente!" << endl;
}
    else{
    cout <<"Tentativas: " << tentativas <<"!" << endl;
    cout.precision(2);
    cout << fixed;
    cout << "Pontos: " << pontos << "!" << endl;

    }
}
5 respostas

Oi Lucas! Tudo bem?

No trecho:

if(acertou){

        cout <<"Parabens, você acertou!" << endl;
        break;
        nao_acertou = false;

    }

o break vem depois de mudar a variável nao_acertou, pois, se você para o loop antes de mudar a variável, não será possível saber que o não acertou é false. Fica dessa forma:

if(acertou){

        cout <<"Parabens, você acertou!" << endl;
        nao_acertou = false;
        break;
    }

Espero ter ajudado! Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Muito obrigado, mas o meu continua dando problema, quando eu acerto o numero ele conta direito, ele conta errado quando eu erro todos e perco.

Oi Lucas!

Dei uma olhada mais minuciosa no seu código e tem algumas coisas diferentes do que o instrutor fez:

  1. Você declarou uma variável acertou fora do for, enquanto ele não, e essa variável pode estar guardando algum lixo de memória.
  2. Lá no final, você faz um if(acertou), usando essa variável. O instrutor usa o nao_acertou, por isso pode dar alguma divergência.
  3. (Esse é só uma observação mesmo, acho que pode deixar como está) No número de tentativas no nível fácil, você inicializou como 14 ao invés de 15.

Modifiquei o código e acho que agora foi!

#include <iostream>
using namespace std;

int main(){

    cout << "******************************" << endl;
    cout << "*Bem vindo ao jogo da advinhaçao!*" << endl;
    cout << "******************************" << endl;

    cout << "Escolha o seu nivel de dificuldade: " << endl;
    cout << "Os niveis são: Facil(F), Medio(M) e Dificil(D)!" << endl;
    char nivel;
    cin >> nivel;

    int numero_tentativas;
    const int numero_secreto = 45;

    int tentativas = 0;
    bool nao_acertou = true;

    double pontos = 1000.0;

    if (nivel == 'F'){

        numero_tentativas = 15;
    } else if (nivel == 'M'){

        numero_tentativas = 10;
    } else{

        numero_tentativas = 5;
    }

    for (tentativas = 1; tentativas <= numero_tentativas; tentativas++){

        int chute;
        cout << "Qual o seu chute?" << endl;
        cin >> chute;
        cout << "O seu chute foi " << chute << "!" << endl;

        double pontos_perdidos = abs(chute - numero_secreto) / 2.0;
        pontos = pontos - pontos_perdidos;

        bool acertou = chute == numero_secreto;
        bool maior = chute > numero_secreto;
        bool menor = chute < numero_secreto;

        if (acertou){

            cout << "Parabens, você acertou!" << endl;
            nao_acertou = false;
            break;
        } else if (maior) {

            cout << "Você errou, o seu chute foi maior!" << endl;
        } else {

            cout << "Você errou, o seu chute foi menor" << endl;
        }
    }
    cout << "**Fim de jogo!**" << endl;

    if (nao_acertou){
        cout << "Você perdeu, tente novamente!" << endl;
    } else {
        cout << "Tentativas: " << tentativas << "!" << endl;
        cout.precision(2);
        cout << fixed;
        cout << "Pontos: " << pontos << "!" << endl;
    }
}

Espero que dê certo!

Ta ok, muitissimo obrigado

Não se esquece de marcar como solucionado :)