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

O que tem de errado nesse código?

A primeira tentativa do código dá certo, porém quando se atualiza o valor da variável "num", quando chama a função "perguntaUsuario" a variável "num" continua a mesma.

#include <stdio.h>

#define TENTATIVAS 5
#define NUM_SECRETO 45

void apresentaMenu(){
    printf("***********************************\n");
    printf("* BEM VINDO AO JOGO DE ADVINHAÇÃO *\n");
    printf("***********************************\n");
}

int perguntaUsuario(){
    int num;
    printf("Qual número você deseja chutar?  ");
    scanf("%d", &num);
    return num;
}

int verificaNum(int num){
    int i;
    int acertou = num == NUM_SECRETO;
    int menor = num <= NUM_SECRETO;
    int maior = num >= NUM_SECRETO;
    
    for(i=1; i<TENTATIVAS; i++){
        if (num < 0){
            printf("O número não pode ser negativo! \n");
            num = perguntaUsuario();
        }
        
        if(acertou){
            printf("Parábens você acertou!\n");
            break;
        }
        else if(menor){
            printf("O seu número é menor que o número secreto. \n");
            printf("Número de tentativas restantes: %d \n", TENTATIVAS - i );
            num = perguntaUsuario();
        }
        else{
            printf("O seu número é maior que o número secreto. \n");
            printf("Número de tentativas restantes: %d \n", TENTATIVAS - i );
            num = perguntaUsuario();
        }	
    }
}



int main()
{   int num;
    apresentaMenu();
    num = perguntaUsuario();
    verificaNum(num);
    return 0;
}
2 respostas
solução!

Olá, Clayton! Tudo bem?

O problema no seu código estava na verificação do número, como você estava fazendo a verificação fora do loop ele acabava repetindo o resultado anterior, além de que a variável maior é desnecessária já que você não está utilizando em nenhum lugar. Então, fiz alguns ajustes no seu código em cima nos dos pontos que comentei:

#include <stdio.h>

#define TENTATIVAS 5
#define NUM_SECRETO 45

void apresentaMenu(){
    printf("***********************************\n");
    printf("* BEM VINDO AO JOGO DE ADVINHAÇÃO *\n");
    printf("***********************************\n");
}

int perguntaUsuario(){
    int num;
    printf("Qual número você deseja chutar?  ");
    scanf("%d", &num);
    return num;
}

int verificaNum(int num){
    int i;


    for(i=1; i<TENTATIVAS; i++){
        int acertou = num == NUM_SECRETO;
        int menor = num <= NUM_SECRETO;

        if (num < 0){
            printf("O número não pode ser negativo! \n");
            num = perguntaUsuario();
        } 
        
        if (acertou){
            printf("Parábens você acertou!\n");
            break;
            
        } else if (menor){
            printf("O seu número é menor que o número secreto. \n");
            printf("Número de tentativas restantes: %d \n", TENTATIVAS - i );
            num = perguntaUsuario();
        }
        else{
            printf("O seu número é maior que o número secreto. \n");
            printf("Número de tentativas restantes: %d \n", TENTATIVAS - i );
            num = perguntaUsuario();
        }	
    }
}

int main()
{   int num;
    apresentaMenu();
    num = perguntaUsuario();
    verificaNum(num);
    return 0;
}

Espero ter ajudado e caso tenha mais dúvidas ou problemas, estarei à disposição para ajudar.

Grande abraço e bons estudos!

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

Entendi, muito obrigado!!