1
resposta

Não consigo alterar o valor da variável depois de declarada.

No meu código declaro da variável autoexplicativa "numerodetentativas" como de valor 0 para depois trocar o valor de acordo com a dificuldade escolhida. Entretanto por algum motivo ela segue com o valor que foi declarado inicialmente e meu código roda de maneira alheia ao que quero. Quando declaro 0 o valor é zero, quando não declaro com valor o valor é um número do lixo e por aí vai. Gostaria de entender o motivo e obviamente corrigi-lo. O código todo está assim:

#include<stdio.h>
#include<stdbool.h>

int main()
{
    const int NUMEROSECRETO = 42;
    int chute = 0;

    //cabeçalho
    printf("********************************\n");
    printf("BEM VINDO AO JOGO DA ADIVINHAÇÃO\n");
    printf("********************************\n\n");

    //escolha da dificuldade
    char dificuldade;
    bool naoescolheu = true;
    int numerodetentativas = 0;

    printf("Escolha a sua dificuldade:\n");
    printf("Fácil(F)\n");
    printf("Médio(M)\n");
    printf("Difícil(D)\n");
    printf("Escolha: ");
    scanf("%s", &dificuldade);

    while(naoescolheu) //while1
    {
        if(dificuldade == 'F')
        {
            numerodetentativas = 15;
            naoescolheu = false;
        }//endif
        else if(dificuldade == 'M')
        {
            numerodetentativas = 10;
            naoescolheu = false;
        }//endielseif
        else if(dificuldade == 'D')
        {
            numerodetentativas = 5;
            naoescolheu = false;
        }//endelseif
        else
        {
            printf("Por favor, escolha uma alternativa válida.\n\n");
        }//endelse
    }//endwhile1
    printf("Você possui este número de tentativas: %d\n", numerodetentativas);

    for(int i = 1; i <= numerodetentativas; i++)
    {
        //adivinhação do número secreto
        printf("Tente adivinhar o número secreto!\n");
        printf(" O seu chute é: ");
        scanf("%d", &chute);

        if(chute == NUMEROSECRETO)
        {
            printf("Meus parabéns, você acertou! O número secreto é %d", NUMEROSECRETO);
        }
        else if(chute > NUMEROSECRETO)
        {
            printf("Que pena, você errou. Seu chute foi maior do que o número secreto.\n\n");
        }
        else if(chute < NUMEROSECRETO)
        {
            printf("Que pena, você errou. Seu chute foi menor do que o número secreto.\n\n");            
        }
    }//endfor
    printf("Infelizmente você perdeu, não possui mais tentativas.");
    return 0;
}//endintmain
1 resposta

Boa noite, Ciro!

Você declarou a variável "dificuldade" como char. Contudo, ao utilizar a função scanf(), você está utilizando o especificador de formato "%s", que é para string. O correto seria utilizar "%c", que é para char.