1
resposta

[Bug] Erro no loop

escrevi o código de acordo com o explicado, mas quando compilo o a linha tracejada aparece uma vez e a letra selecionada não é substituída.

#include <stdio.h>
#include <string.h>

int main(){
    
    char palavrasecreta[20];
    sprintf(palavrasecreta, "MELANCIA");

    int acertou = 0;
    int enforcou = 0;

    char chutes [26];
    int tentativas = 0;
    do {

       for (int i = 0; i < strlen(palavrasecreta); i++){
            int achou = 0;

            for (int j = 0; j < tentativas; i++){
                 if (chutes[j] == palavrasecreta[i]){
                 achou = 1;
                 
                 break;
                }
            }
            if (achou){
                printf("%c", palavrasecreta[i]);
            }else{
                printf("_ ");
            }
        }
        printf("\n");

        char chute; 
        printf("Qual letra? ");
        scanf("%c", &chute);

        chutes[tentativas] = chute;
        tentativas++;

    }while (!acertou && !enforcou);

}
1 resposta

Opa, Miguel, tudo certo por aí?

O problema está na linha onde você incrementa a variável i no segundo loop, quando na verdade, você deveria estar incrementando a variável j.

Aqui está o trecho de código corrigido:

for (int j = 0; j < tentativas; j++){
    if (chutes[j] == palavrasecreta[i]){
        achou = 1;
        break;
    }
}

Se outra dúvida surgir, estamos aqui.

Abraço! Bons estudos! :)

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