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

Pq meu for nao esta funcionando :(

#include <stdio.h>
#include <stdalign.h>

int main (){
    printf("************************************************** \n");
    printf("*****Bem Vindo ao nosso jogo de adivinha!********* \n");
    printf("************************************************** \n");

    int numerosecreto = 6;
    int chute;

        for(int i=1; i<= 3; i++) {
            printf("Tentativa %d de 3\n", i);

            printf("Qual o seu chute? \n");
            scanf("%d", &chute);
            printf("Seu chute foi %d\n", chute);

            int acertou = (chute == numerosecreto);

            if(acertou){
                printf("Parabens voce acertou! \n");
                printf("Jogue de novo, voce e um bom jogador! \n");

            } else{
                int maior = (chute > numerosecreto);

                    if(chute>numerosecreto){
                       printf("Seu chute foi maior que o numero secreto \n");

                       }
                       else{
                        printf("Seu chute foi menor que o numero secreto \n");

                       }
            }

            getchar();


        printf("Fim de jogo!\n");
    }
}
8 respostas
solução!

Oi Rômulo, tudo certo?

O quando temos um instrução return dentro de um bloco, a execução é encerrada. No caso o return dentro do seu for está encerrando a execução do laço.

Tente retirar essa linha, compilar o programa e rodar novamente?

// restante do código
            }

            getchar();

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

abraços!

O problema continua mesmo com a retirada do return 0

int main (){
    printf("************************************************** \n");
    printf("*****Bem Vindo ao nosso jogo de adivinha!********* \n");
    printf("************************************************** \n");

    int numerosecreto = 6;
    int chute;

        for(int i=1; i<= 3; i++) {
            printf("Tentativa %d de 3\n", i);

            printf("Qual o seu chute? \n");
            scanf("%d", &chute);
            printf("Seu chute foi %d\n", chute);

            int acertou = (chute == numerosecreto);

            if(acertou){
                printf("Parabens voce acertou! \n");
                printf("Jogue de novo, voce e um bom jogador! \n");

            } else{
                int maior = (chute > numerosecreto);

                    if(chute>numerosecreto){
                       printf("Seu chute foi maior que o numero secreto \n");

                       }
                       else{
                        printf("Seu chute foi menor que o numero secreto \n");

                       }
            }

            getchar();

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

Oi Rômulo, você chegou a compilar o código novamente, antes de rodar?

Eu copiei e colei esse código que me mandou agora e funcionou.

ou tá acontecendo algum outro comportamento estranho que eu não consegui identificar?

abraço!

Estou usando o code block, a mensagem de erro é a seguinte "E:\Aula C\jogo_de_adivinha\main.c|16|error: 'for' loop initial declarations are only allowed in C99 or C11 mode|" e tabem "E:\Aula C\jogo_de_adivinha\main.c|16|note: use option -std=c99, -std=gnu99, -std=c11 or -std=gnu11 to compile your code|"

consegui resolver o problema. Muito obrigado pela ajuda ;)

Opa! Acho que já saquei. Seu padrão da linguagem C não permite que você inicie a variável dentro do for. Para resolver isso, é necessário passar um parâmetro para o compilador:

gcc -std=c99 adivinhacao.c -o adivinhacao.out

Nesse caso, vc teria que pesquisar como passar parâmetro para o compilador no code block, talvez esse artigo ajude:

http://stackoverflow.com/questions/33208733/how-to-add-compiler-flags-on-codeblocks

maravilha então! abraços!

gcc -std=c99 adivinhacao.c -o adivinhacao.out

Essa solução não funcionou pra mim, estou codando dentro do VI no terminal do raspberry, apareceu o mesmo erro, e após usar a solução acima, meu for simplesmente não foi lido pelo compilador