2
respostas

Galera problemas com o loop

Meu código está igual do curso, porém quando copilo o programa me passa esse erro:

linha40    C5    C:\Users\Fernando\Desktop\Curso de Programação\Adivinhação\Programa.c    [Error] 'for' loop initial declarations are only allowed in C99 or C11 mode.

Como sou novo em programação o que seria esse modo C99 ou C11. Código:

#include <locale.h>
#include <stdlib.h>
#include<time.h>

int main () {
    // Imprime o cabeçalho do nosso jogo
    setlocale(LC_ALL,"");
    printf("******************************************");
    printf("* Bem-vindo ao nosso jogo de adivinhação *");
    printf("******************************************");

    int segundos = time(0);
    srand(segundos);

    int numerogrande = rand();

    int numerosecreto = numerogrande % 100;
    int chute;
    int tentativas = 1;
    double pontos = 1000;

    int acertou = 0;

    int nivel;
    printf("Qual é o nível de dificuldade");
    printf("(1) Fácil (2) Médio (3) Difícil\n\n");
    printf("Escolha:");
    scanf("%d", &nivel);
    int numerodetentativas;
    if(nivel == 1) {
        numerodetentativas = 20;
    }
    else if(nivel == 2) {
        numerodetentativas = 15;
    } 
    else (nivel == 3); {
        numerodetentativas = 6;
    }

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

        printf("Tentativa %d\n", tentativas);
        printf("Qual é o seu chute? ");

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

        if(chute < 0) {
            printf("Você não pode chutar números negativos!\n");
            continue;
        }

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

        if(acertou){
            break;
        }

        else if(maior) {
            printf("Seu chute foi maior que o número secreto\n");
        }

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

        tentativas++;

        double pontosperdidos = abs(chute - numerosecreto) / (double)2;
        pontos = pontos - pontosperdidos;

    }

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

    if(acertou) {
        printf("Você ganhou!\n");
        printf("Você acertou em %d tentativas!\n", tentativas);
        printf("Total de pontos: %.1f\n", pontos);
    } else {
        printf("Você perdeu! Tente de novo!\n");
    }


}
2 respostas

1 - Declarar a variável ‘i’ antes do laço for, dessa forma, vou deixar um exemplo simples aqui.

#include <stdio.h>

int main() {

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

    return 0;   
}

2 - Configurar o Dev C++ para usar o padrão ansi iso c99 (recomendado para evitar mais problemas de compatibilidade com os exercícios do livro). – na barra de ferramentas do dev c++ clique em Ferramentas, depois clique em Opções do Compilador , vai abrir uma janelinha, clique na aba Geração de Código, aonde diz Padrão da Linguagem (-std) selecione para ISO C99 e clique em Ok, agora seu código vai funcionar, e não vai aparecer mais essa mensagem de erro.

Bom estudo.

Valeu Luis Alves deu certo cara, fiquei até feliz aqui.ahahahaha