1
resposta

Fiz o código exatamente igual a do curso de introdução a linguagem c,parte final e não funciona perfeitamente

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

int main() {

// imprime cabecalho do nosso jogo
printf("\n\n");
printf("          P  /_\\  P                              \n");
printf("         /_\\_|_|_/_\\                            \n");
printf("     n_n | ||. .|| | n_n          Bem vindo ao    \n");
printf("     |_|_|nnnn nnnn|_|_|      Jogo de Adivinhação!\n");
printf("    |" "  |  |_|  |"  " |                         \n");
printf("    |_____| ' _ ' |_____|                         \n");
printf("          \\__|_|__/                              \n");
printf("\n\n");



int segundos=time(0);
srand (segundos);
int numerogrande = rand();
int numerosecreto= numerogrande % 100;


int chute;
int tentativas = 1;
double pontos=1000;
int acertou=0;

 int nivel;
printf("Qual o nível de dificuldade?\n");
printf("(1) Fácil (2) Médio (3) Difícil\n\n");
printf("Escolha: ");
scanf("%d", &nivel);

int numerodetentativas;
if(nivel == 1) {
    numerodetentativas = 20;
}
else if (nivel == 2) {
    numerodetentativas = 15;
}
else {
    numerodetentativas = 6;
}

for(int i =1;i<=numerodetentativas;i++) {

    printf("Tentativa %d\n", tentativas);
    printf("Qual é o seu chute? ");

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

    if(chute < 0) {
        printf("Você não pode chutar números negativos!\n");
        continue;
    }

    int acertou = (chute == numerosecreto);
    int maior = chute > numerosecreto;

    if(acertou) {


        break;
    }

    else if(maior) {
        printf("Seu chute foi maior que o número secreto\n");
    } 

    else {
        printf("Seu chute foi menor que o número secreto\n");
    }

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

printf("Fim de jogo!\n");
if (acertou){
    printf("Você ganhou\n");
printf("Você acertou em %d tentativas!", tentativas);
printf("Total de pontos: %.1f\n", pontos);}
else{
    printf("Você perdeu tente de novo\n");
}

}

1 resposta

Olá Vitor, tudo bem?

O problema está nessa linha:

int acertou = (chute == numerosecreto);

Repare que a variável int acertou já tinha sido declarada fora do for . Em outras palavras, seu código está com duas variáveis chamadas acertou , porém em escopos diferentes.

O correto seria utilizar a mesma variável que havia sido declarada inicialmente com valor 0 (sem o int): acertou = (chute == numerosecreto);

Espero ter ajudado, qualquer dúvida estou à disposição.