1
resposta

[Sugestão] Mais condicional - Dúvida na lógica do exercício

Questão:

E esse trecho de código, o que faz?

int chute = 0;
int numerosecreto = 42;
int acertou = chute == numerosecreto;
if(acertou) {
    printf("Parabéns! Você acertou!\n");
} else {
    if(chute > numerosecreto) {
        printf("Seu chute foi maior do que o número secreto!\n");
    } 
    if(chute < numerosecreto) {
        printf("Seu chute foi menor do que o número secreto!\n");
    }
}

Resposta na plataforma

Se a variável acertou for verdadeiro (ou seja, diferente de 0), ele imprime a mensagem de Parabéns. Caso contrário, temos mais dois ifs: se o chute for maior que o número secreto, então imprime a mensagem de chute maior. Se for menor que número secreto, imprime a mensagem de chute menor.

Como a variável acertou é o resultado da comparação entre chute e numerosecreto, então o resultado final é que temos uma mensagem para cada possibilidade: as duas variávies são iguais, uma é maior que a outra, e uma é menor que a outra.

Minha resposta

Ao tentar compilar este programa, há uma falha de execução pelo seguinte motivo:

Linha 3: int acertou = chute == numerosecreto;

Neste trecho, a variável "acertou" foi definida como de tipo inteiro, mas a sua lógica é booleana, pois o valor de retorno da expressão chute == numerosecreto é "FALSE" e não um número inteiro, impossibilitando o programa de compilar corretamente.

1 resposta

Olá, Guilherme!

Pelo que entendi, você está com uma dúvida sobre o trecho de código apresentado. Vou tentar te ajudar!

Esse trecho de código é um exemplo de uso de condicionais em C. Ele tem como objetivo verificar se o valor da variável "chute" é igual ao valor da variável "numerosecreto".

Primeiro, é definido o valor inicial da variável "chute" como 0 e o valor da variável "numerosecreto" como 42. Em seguida, é feita a comparação entre essas duas variáveis e o resultado é atribuído à variável "acertou".

Depois, temos um bloco condicional. Se o valor da variável "acertou" for verdadeiro (diferente de 0), ou seja, se o chute for igual ao número secreto, será impressa a mensagem "Parabéns! Você acertou!".

Caso contrário, se o chute for maior que o número secreto, será impressa a mensagem "Seu chute foi maior do que o número secreto!". E, por fim, se o chute for menor que o número secreto, será impressa a mensagem "Seu chute foi menor do que o número secreto!".

Dessa forma, o programa exibe uma mensagem de acordo com a relação entre o chute e o número secreto.

Agora, quanto à sua dúvida na plataforma, você mencionou que há uma falha de execução no trecho de código devido à definição da variável "acertou" como inteiro, mas sua lógica é booleana. Realmente, a variável "acertou" poderia ser definida como um tipo booleano em vez de inteiro, já que seu valor é baseado em uma condição verdadeira ou falsa.

Espero ter esclarecido sua dúvida! Se tiver mais alguma pergunta, é só me dizer. Bons estudos!

Espero ter ajudado e bons estudos!

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