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

Erro no for ao copilar no Code Blocks

Está dano erro no meu código o Code:Blocks para na linha 13 no for e da erro alguém sabe como solucionar esse erro no Code:Blocks.

 # include <stdio.h>
 # include <conio.h>
 # include <locale.h>

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

    int numerosecreto = 42;
    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");

                break;

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

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

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

                       }
            }


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

Oi Rafael, tudo bem?

Qual o erro que está sendo mostrado?

O código, segundo os padrões ISO, não possui nenhum erro. No padrão ANSI, entretanto, essas linhas de código são ilegais:


int numerosecreto = 42;
int chute;
...
for(int i = 1; i <= 3; i++)
...
int acertou = (chute == numerosecreto);

Segundo o padrão ANSI toda variável deve ser declarada no início de um bloco.

Não sei ao certo qual o compilador que o Code Blocks usa, mas se o mesmo só aceita código ANSI, este é o motivo. Ele também compila códigos C++?

De todo modo, há um erro conceitual grave no teu código, estás definindo main como int e não estás retornando valor algum. É praxe utilizar valor 0 como sinalização de que não ocorreu nenhum erro de execução, e utilizar os valores de erro padronizados para repassar ao SO as informações sobre condições de erro. Essa é uma prática mais comum no mundo UNIX, mas ainda assim é uma boa prática.

solução!

Oi Rafael, exatamente isso que o Daniel falou! pode ser esse o problema.

Se não estou enganado, uma possível solução é fazer:

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

Voce pode tentar compilar o código utilizando o ISO tbm:

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

vê se ajuda? abraços!

Obrigado Lucas Félix. Achei o erro com sua explicação o Code:Blocks não estava aceitando a variável dentro do for .

 int numerosecreto = 42;
    int chute;

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

Fiz isso e copilou.

int numerosecreto = 42;
    int chute;
    int i;
        for( i=1;i <=3; i++)