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

Erros de Loop

Ao rodar o meu código, ele só apresenta dois problemas:

na linha 70 ("Continue statement not within a loop") referente ao meu (continue;) na linha 79 ("break statement not within loop or switch") referente ao meu (break;)

Poderiam me ajudar?

Segue meu código abaixo:

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

int main()
{
    printf("**********************************\n");
    printf("Bem vindo ao jogo da adivinhação!\n");
    printf("**********************************\n");
    
    int segundos = time(0);
    srand(segundos);
    
    int numerogrande = rand();
    
    int numerosecreto = numerogrande % 100;
    
    int chute;
    
    int tentativas = 1;
    
    double pontos = 1000;
    
    int nivel;
    
    int numerodetentaivas;
    
    switch(nivel) {
        
        case 1:
        numerodetentaivas = 20;
        break;
        
        case 2:
        numerodetentaivas = 10;
        break;
        
        default:
        numerodetentaivas = 5;
        break;
    }
    
    int acertou = 0;
    
    nivel;
    printf("Qial o nível de dificuldade?\n\n");
    printf("(1) Fácil (2) Médio (3) Difícil\n\n");
    printf("Escolha: ");
    scanf("%d", &nivel);
    
    for( int i = 1; i <= numerodetentaivas; i++); {
    
    printf("Tentativa %d\n\n", tentativas);
    printf("Qual o seu chute?");
    scanf("%d", &chute);
    printf("Seu chute foi %d\n\n", chute);
    
    if (chute < 0) {
        
        printf("Você não pode chutar números negativos!\n\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\n");
        }
        
       else {
        printf("Seu chute foi menor que o número secreto\n\n");
            
           
       }
            
            tentativas++;
            
            double pontosperdidos = abs(chute - numerosecreto) / 2.0;
            
            
            
    }   
    
    printf("Fim de jogo!!!\n");
    
    if (acertou) {
        
    printf("Você ganhou!\n");
    printf("Você acertou e, %d tentativas!\n", tentativas);
    printf("Total de pontos: %.1f pontos\n\n", pontos);
    
    }
    
    else {
        printf("Você perdeu! Tente novamente.\n");
    
    }

 
 }
2 respostas
solução!

Olá, Murilo! Tudo bem?

Os erros que você mencionou indicam que os comandos continue e break não estão sendo usados num loop ou switch apropriado. Isso geralmente ocorre quando há um erro de sintaxe que impede que esses comandos sejam reconhecidos como parte de um loop.

No seu código, o problema está na linha do for:

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

Você colocou um ponto e vírgula (;) ao final da declaração do for, o que faz com que o loop for não tenha um bloco de código associado para executar, tornando-o um loop vazio. Isso faz com que o bloco de código seguinte, que contém os comandos continue e break, não seja reconhecido como parte do loop.

Para corrigir isso, você deve remover o ponto e vírgula após o for:

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

Além disso, notei que você usou a variável nivel antes de atribuir um valor a ela. Isso pode causar comportamento indefinido no seu programa. Você deve mover o bloco de código que lê o valor de nivel para antes do switch que usa essa variável:

printf("Qual o nível de dificuldade?\n\n");
printf("(1) Fácil (2) Médio (3) Difícil\n\n");
printf("Escolha: ");
scanf("%d", &nivel);

switch(nivel) {
    case 1:
        numerodetentaivas = 20;
        break;
    case 2:
        numerodetentaivas = 10;
        break;
    default:
        numerodetentaivas = 5;
        break;
}

Essas mudanças devem resolver os problemas que você encontrou.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Poxa, só agora que consegui ver.

Caraca, erros simples podem realmente influenciar em um código inteirinho.

Sou novo na programação, então passou batido mesmo.

Muito obrigado pela sua ajuda Armano, foi excepcional!!!!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software