Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

O codigo resulta diferente

Ola , quando eu rodo o programa ,o resultado sempre da diferente ,primeiro sempre da erro (42) e depois acerto. O que pode ser ?

#include <stdio.h>
#define NUMERO_DE_TENTATIVAS 3

int main(){

    printf("***************************************\n");
    printf("*Bem-Vindo ao nosso jogo de advinhação*\n");
    printf("***************************************\n");

int chute;
int numerosecreto = 42;

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

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

    printf("Tentativa %d de 3\n",i);
    printf("Qual é o seu chute ?");
    scanf ("%d",&chute);
    printf("Seu chute foi %d\n",chute );

    if(acertou) {
        printf("Parabéns. Você acertou!\n");
        printf("Jogue novamente,voce é um bom jogador!\n");
        break;
        }
    else if(maior) {
            printf("Errou.Seu chute foi maior do que o número secreto!\n");
    }
        else{
            printf("Errou.Seu chute foi menor do que o número secreto!\n");
    }

}
}
1 resposta
solução!

Olá.

Bem, o problema está na ordem do algoritmo, uma vez que ele executa da seguinte maneira:

Compara valor -> Recebe valor -> Exibe resultado -> Fim!

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

    // Compara sem receber o valor do "chute" 
    int acertou = chute == numerosecreto;
    int maior = chute > numerosecreto;

    // Recebe o valor para comparação
    printf("Tentativa %d de 3\n",i);
    printf("Qual é o seu chute ?");
    scanf ("%d",&chute);
    printf("Seu chute foi %d\n",chute );(```)
    // Entra no loop novamente com o valor inserido anteriormente

// Continuação do código ...

O que acontece é que na primeira comparação o valor de "chute" recebe lixo de memória, pois não foi inicializado com um valor pré definido. Para evitar o erro de comparação com lixo de memória, organize o código de acordo com a execução.

Recebe valor -> Compara valor -> Exibe Resultado - > Fim!

Desta forma o código funcional ficaria assim:

for (int i = 1; i<=NUMERO_DE_TENTATIVAS; i++){
    //Recebe o valor do "chute"
    printf("Tentativa %d de 3\n",i);
    printf("Qual é o seu chute ?");
    scanf ("%d",&chute);
    printf("Seu chute foi %d\n",chute );

    //Compara o resultado    
    int acertou = chute == numerosecreto;
    int maior = chute > numerosecreto;

// Continuação do código ...

Espero ter ajudado.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software