1
resposta

Mensagem de erro no meu código

Olá gente, alguem pode me ajudar? Eu to no video "continue" e fui executar meu codigo e está dando a seguinte mensagem de erro: 'else' without a previous 'if'

Não entendi pessoal :/

#include <stdio.h>

#define NUMERO_DE_TENTATIVAS 5

int main(int argc, char const *argv[])
{
    //IMPRIME CABEÇALHO DO NOSSO JOGO NA TELA
    printf("**********************\n");
    printf("*BEM VINDO AO NOSSO JOGO DE ADIVINHACAO*\n");
    printf("**********************\n");

    //DECLARANDO VARIAVEL
    int numero_secreto = 42;
    int chute;

    for(int i = 1; i <=NUMERO_DE_TENTATIVAS; i++){
        printf("\nTENTATIVA %d DE %d\n", i, NUMERO_DE_TENTATIVAS);
        printf("QUAL E O SEU CHUTE? ");
        //PEGAR DO TECLADO, LÊ
        scanf("%d", &chute);
        //IMPRIMINDO O VALOR DA VARIAVEL
        printf("SEU CHUTE FOI %d", chute);

        if (chute < 0) {
            printf("VOCÊ NÃO PODE CHUTAR NÚMEROS NEGATIVOS!\n");
            i--;
            continue;
        }

        int acertou = (chute == numero_secreto);
        int maior = chute > numero_secreto;
        int menor = chute < numero_secreto;

        else if (acertou) {
            printf("\nPARABENS VOCE ACERTOU!\n");
            break;
        }
        else if(maior){
            printf("\nSEU CHUTE FOI MAIOR QUE O NUMERO SECRETO\n");
                }
        else {
            printf("\nSEU CHUTE FOI MENOR QUE O NUMERO SECRETO\n");
                }
            printf("\nVOCE ERROU!\n");

    }
    printf("FIM DE JOGO\n");
    return 0;
}
1 resposta

Boa tarde Sabrina, o que aconteceu é que você quebrou a sequência do if com o seguinte código:

int acertou = (chute == numero_secreto);
int maior = chute > numero_secreto;
int menor = chute < numero_secreto;

O if, else if e else devem ser executados em sequencia, nenhum código pode ficar entre eles, o código correto ficaria assim (perceba que na verificação da variável acertou o else foi removido):

#include <stdio.h>

#define NUMERO_DE_TENTATIVAS 5

int main(int argc, char const *argv[])
{
    //IMPRIME CABEÇALHO DO NOSSO JOGO NA TELA
    printf("**********************\n");
    printf("*BEM VINDO AO NOSSO JOGO DE ADIVINHACAO*\n");
    printf("**********************\n");

    //DECLARANDO VARIAVEL
    int numero_secreto = 42;
    int chute;

    for(int i = 1; i <=NUMERO_DE_TENTATIVAS; i++){
        printf("\nTENTATIVA %d DE %d\n", i, NUMERO_DE_TENTATIVAS);
        printf("QUAL E O SEU CHUTE? ");
        //PEGAR DO TECLADO, LÊ
        scanf("%d", &chute);
        //IMPRIMINDO O VALOR DA VARIAVEL
        printf("SEU CHUTE FOI %d", chute);

        if (chute < 0) {
            printf("VOCÊ NÃO PODE CHUTAR NÚMEROS NEGATIVOS!\n");
            i--;
            continue;
        }

        int acertou = (chute == numero_secreto);
        int maior = chute > numero_secreto;
        int menor = chute < numero_secreto;

        if (acertou) {
            printf("\nPARABENS VOCE ACERTOU!\n");
            break;
        }
        else if (maior) {
            printf("\nSEU CHUTE FOI MAIOR QUE O NUMERO SECRETO\n");
        }
        else {
            printf("\nSEU CHUTE FOI MENOR QUE O NUMERO SECRETO\n");
        }

        printf("\nVOCE ERROU!\n");
    }

    printf("FIM DE JOGO\n");
    return 0;
}