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

Condicional não funcionando

Olá pessoal estou com um problema aqui, cheguei até a última aula e fiz o programa de adivição, mas resolvi testar se a mensagem de vitória aparece corretamente.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
    //Imprimi cabeçalho do jogo
    printf(" ******************************************\n");
    printf(" * Bem vindo ao nosso jogo de adivinhação *\n");
    printf(" ******************************************\n");

    srand(time(0));

    int numerosecreto = rand() % 100;
    int chute;
    int tentativa = 1;
    double pontos = 1000;
    int nivel;
    int acertou =0;

    //apenas para verificacao, nao faz parte do jogo
    printf("Numero secreto : %d\n", numerosecreto);

    printf("Qual o nivel de dificuldade?\n");
    printf("(1)Facil (2) Medio (3) Dificil\n\n");
    printf("Escolha: ");
    scanf("%d",&nivel);

    int numerodetentativas;

    switch(nivel){
    case 1:
        numerodetentativas = 20;
        break;

    case 2:
        numerodetentativas = 15;
        break;

    default:
        numerodetentativas = 6;
        break;
    }

    int i;
    for (i=1;i <= numerodetentativas;i++){
        printf  ("Tentativa %d \n",tentativa);
        printf  ("Qual seu chute? \n");

        scanf   ("%d",&chute);
        //printf  ("Seu chute foi %d \n",chute);

        if (chute < 0){
            printf("Voce nao pode chutar numeros negativos!\n");
            continue;
        }

        int acertou = (chute == numerosecreto);
        //printf("%d\n",acertou);
        int maior = chute > numerosecreto;

        if (acertou){
            break;
        }
        else if (maior){
            printf("Seu chute foi maior que o numero secreto\n");
        }
        else{
            printf("Seu chute foi menor que o numero secreto\n");
        }

        tentativa++;

        double pontosperdidos = abs(chute - numerosecreto)/(double)2.0;
        pontos = pontos-pontosperdidos;

    }
    printf("Fim de jogo!\n");

    if(acertou){
        printf("Parabens! Voce acertou!\n");
        printf("Voce acertou em %d tentativas", tentativa);
        printf("Total de pontos: %.1f\n", pontos);
    } else {
        printf("Voce perdeu! Tente novamente \n");
    }

    return 0;
}

Sempre que eu acerto o número estou recebendo a mensagem:

"Fim de jogo!" "Voce perdeu! Tente novamente"

Coloquei para aparecer na tela as variaveis "numerosecreto" e "acertou", os valores estão todos corretos, mas a mensagem continua estranho, por que será?

2 respostas
solução!

Oi Henrique.

Seu problema é que você declara sua variável acertou no começo do código (antes do for), e depois você declara de novo dentro do for, assim, o valor que você alterou dentro do for não vale fora dele, pois a variável foi criada lá dentro e portanto só existe lá.

Experimente fazer o seguinte, no lugar de

int acertou = (chute == numerosecreto)

faça

acertou = (chute == numerosecreto)

Isso deve resolver seu problema. Espero ter ajudado.

Oi Giovana !

Eu nem percebi que não apaguei o "int" na frente de

int acertou = (chute == numerosecreto)

Fiz o que você falou e rodou sem problemas !

Muito obrigado !!!!