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

Problemas com FOR

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.

#include <stdio.h>

  int main(){

    //imprime o cabeçalho do nosso jogo
    printf("***************************************\n");
    printf("*Bem-Vindo ao nosso jogo de advinhação*\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? ");
    scanf("%d",&chute);
    printf("Seu chute foi %d\n", chute);

    int acertou = chute == numerosecreto;
    int maior = chute > numerosecreto;


      if(acertou){
       printf("Parabens. Você acertou!\n");
       printf("Jogue de novo, você é um bom jogador!\n");
      }
      else{
        if(maior){
          printf("O seu chute foi maior que o número secreto\n");
        }
        else{
          printf("O seu chute foi menor que o número secreto\n");
        }


  }
}
}
6 respostas

Poderias postar o erro que esta dando no compilador, o codigo não parece ter um erro.

Olá Nicholas,

Seu código está correto, talvez seja algum problema com seu compilador, tenta compilar em outro lugar.

Espero ter ajudado, abs.

Ah, indentei seu código também

#include <stdio.h>

  int main(){

    //imprime o cabeçalho do nosso jogo
    printf("***************************************\n");
    printf("*Bem-Vindo ao nosso jogo de advinhação*\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? ");
        scanf("%d",&chute);
        printf("Seu chute foi %d\n", chute);
        int acertou = chute == numerosecreto;
        int maior = chute > numerosecreto;


        if(acertou){
           printf("Parabens. Você acertou!\n");
           printf("Jogue de novo, você é um bom jogador!\n");
        }else{
            if(maior){
              printf("O seu chute foi maior que o número secreto\n");
            }else{
              printf("O seu chute foi menor que o número secreto\n");
            }
        }

    }
}

Segue o erro:

advinhacao.c: In function ‘main’: advinhacao.c:16:1: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode for(int i = 1; i<=3;i++){ ^ advinhacao.c:16:1: note: use option -std=c99, -std=gnu99, -std=c11 or -std=gnu11 to compile your code

No caso meu pc deu pau, como não tive tempo de pesquisar como instalar o gcc no meu PC quando tava funcionando, acabei fazendo pelo terminal do rasp mesmo, visto que a instação é mais facil de se fazer em sistemas unix . Vou tentar baixar o CodeBlocks depois pra ver se da alguma diferença, mas por enquanto queria saber como resolver esse problema. Será que é algo com o compilador?

solução!

Ta, o problema é o seguinte, o compilador C que estas utilizando é um pouco mais antigo e ele não permite a declaracao de variaveis dentro do seu escopo, você deve declarar antes e apenas iniciar no escopo do FOR. Segue em anexo o codigo arrumado.

#include <stdio.h>

int main(){

    //imprime o cabeçalho do nosso jogo
    printf("***************************************\n");
    printf("*Bem-Vindo ao nosso jogo de advinhação*\n");
    printf("***************************************\n");

    int numerosecreto = 42;

    int chute;


    int i;

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

        printf("Tentativa %d de 3\n",i);  

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

        int acertou = chute == numerosecreto;
        int maior = chute > numerosecreto;


        if(acertou)
        {
            printf("Parabens. Você acertou!\n");
            printf("Jogue de novo, você é um bom jogador!\n");
        }
        else
        {
            if(maior)
            {
                printf("O seu chute foi maior que o número secreto\n");
            }
            else
            {
                printf("O seu chute foi menor que o número secreto\n");
            }
        }
    }
}

Funcionou aqui, valeu, vou começar a declarar tudo antes. Resolvido