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

Continue deu errado.

Pessoal, tive um super bug aqui, e estou tentando entender o porque!

meu codigo é esse :

#include <stdio.h>




    int main() { 

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






            int numerosecreto = 42;

            int chute;

            int tentativas = 5;

            int acertou = (chute == numerosecreto);


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

            printf("tentativa %d de %d\n",i, tentativas);    

            printf(" Qual é o seu chute? \n");

            if( chute < 0 ){
                printf(" Vc nao pode colocar numeros negativos, tente de novo! \n");

                i--;

                continue;
            }








            scanf("%d", &chute);
            printf( "Seu chute foi %d \n" , chute );



            if(acertou) {

                printf("* Parabens vc acertou * \n");
                printf("Jogue de novo, vamos ver se vc acerta na proxima vez! =) \n");

                break;
            }
            else { 
                int maior = (chute > numerosecreto);
                if(maior) { 
                    printf("o numero que vc chutou é maior que o numero secreto! \n");

                }
                else{
                    printf("O numero que vc chutou é menor que o numero secreto ! \n");
                }

            }    


        }
        printf("Fim de jogo! \n");
    }

quando rodo o jogo no terminal, e coloco um numero negativo, ele buga e fica repetindo infinitamente :

Qual é o seu chute? Vc nao pode colocar numeros negativos, tente de novo! tentativa 2 de 5 Qual é o seu chute? Vc nao pode colocar numeros negativos, tente de novo! ^C Vc nao pode colocar numeros negativos, tente de novo! tentativa 2 de 5 Qual é o seu chute? Vc nao pode colocar numeros negativos, tente de novo! tentativa 2 de 5

estou quebrando a cabeça, mas nao consegui entender o que está errado.

desde ja agradeço a atenção de todos. Muito obrigado

1 resposta
solução!

Oi Luis, tudo bom?

Seu problema está aqui:

 if( chute < 0 ){
                printf(" Vc nao pode colocar numeros negativos, tente de novo! \n");

                i--;

                continue;
            }

Aqui, estamos dizendo para o nosso sistema continuar! Ou seja, ele vai executar o proximo comando, que é:

  scanf("%d", &chute);
            printf( "Seu chute foi %d \n" , chute );

Se a gente quiser que ele pare a gente precisa trocar nosso comando de continue, para break:

 if( chute < 0 ){
                printf(" Vc nao pode colocar numeros negativos, tente de novo! \n");

                i--;

               break;
            }

Qualquer dificuldade, compartilha com a gente =)

Abraço 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