1
resposta

também falha com o continue

Bom dia gente!

estou tendo uma dificulda semelhante a do colega Luis Felipe.

mas já tentei usar tanto o Break quanto o Continue, mas o código ignora a analise do numero negativo. conseguem me ajudar a entender a falha do código?

Estou usando o IDE DEV-C++

#include <stdio.h>
#include <locale.h>
#define TENTATIVAS 5

int main(void){
    //chama os caracteres especificos da lingua portuguesa
    setlocale(LC_ALL, "Portuguese");
    //imprime o cabeçalho do jogo
    printf ("****************************************");
    printf ("\n");
    printf ("*Bem vindo ao nosso jogo de adivinhação*");
    printf ("\n");
    printf ("****************************************");

    //declaração de variaveis
    int numeroSecreto, chute, acertou, menor, maior;


    for (int i = 1; i<=TENTATIVAS; i++){
        numeroSecreto = 42;
        if (i != TENTATIVAS){
            printf("\nTentativa %d de %d", i, TENTATIVAS);
        }else{
            printf ("\nUltima tentativa");
        }

        printf ("\nQual é o seu chute?");
        scanf ("%d", &chute);
        printf("Seu chute foi %d", chute);
        if (0 > chute){
            printf("que reiva!");
        }
        // NESSE MOMENTO O CÓDIGO NÃO ANALISA OS NUMEROS NEGATIVOS
        if (chute <= 0){
            printf("não é permitido chutar numeros negativos\n");
            i--;
            break;
        }

        acertou = (chute == numeroSecreto);
        maior = (chute > numeroSecreto);
        menor = chute < numeroSecreto;

         if (acertou){
            printf ("\nParabens!! Você acertou");
        } 
        else if (maior){
                printf("\nChutou alto!!");
        } 
        else if(menor){
                printf("\nChutou baixo!");
        }
        if(chute == numeroSecreto){
            break;
        }    
    }
    printf ("\nGame over");    
    return 0;
    }
1 resposta

Olá Sergio!

Pelo que entendi, você está tendo dificuldades em fazer com que o código analise os números negativos corretamente, mesmo utilizando o continue e o break. Vou te ajudar a entender o que está acontecendo.

No seu código, você está utilizando um if para verificar se o chute é menor ou igual a zero. Se essa condição for verdadeira, você imprime uma mensagem informando que não é permitido chutar números negativos e, em seguida, utiliza o break para sair do loop.

No entanto, o break está interrompendo todo o loop, fazendo com que ele não seja executado novamente. Por isso, mesmo que o usuário digite um número negativo, o código não analisa os números negativos nas próximas tentativas.

Uma solução para esse problema é utilizar o continue em vez do break. O continue faz com que o loop pule para a próxima iteração, ignorando o restante do código dentro do loop. Dessa forma, o código analisará os números negativos nas próximas tentativas.

Veja como ficaria o trecho do código com o continue:

if (chute <= 0){
    printf("Não é permitido chutar números negativos\n");
    i--;
    continue;
}

Com essa alteração, se o usuário digitar um número negativo, o código imprimirá a mensagem informando que não é permitido chutar números negativos, decrementará o contador i e pulará para a próxima iteração do loop.

Espero que essa explicação tenha esclarecido sua dúvida! Se tiver mais alguma pergunta, é só me dizer. Espero ter ajudado e bons estudos!