1
resposta

Programa não roda o loop

Eu não sei se eu fiz alguma coisa errada, mas quando eu executo o programa ele quebra o loop na primeira tentativa, independente do número do chute.

int main(){

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?\n");
printf("(1) Fácil (2) Médio (3) Difícil\n\n");
printf("Escolha: ");
scanf("%d", &nivel);

int numerodetentativas;

switch(nivel) {
    case 1:
        numerodetentativas = 20;
        break;

    case 2:
        numerodetentativas = 15;
        break;

    default:
        numerodetentativas = 6;
        break;
}


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{

    printf("Você perdeu! Tente de novo!\n");
    printf("%d",numerodetentativas);

    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;

  }

return 0;

}

}

1 resposta

O loop é quebrado ao término da primeira iteração porque você está retornando a função main.

int main(){
    ...
    for(int i = 1; i <= numerodetentativas; i++) {
        ...
        // A execução da função main terminará aqui!
        return 0;
    }
    // Mova o retorno para cá!
}