Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Bug] Imprimindo em sequencia não importa o chute dado

#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 < (int)strlen(palavrasecreta); i++){
                      
            int achou = 0;

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

            }

            if (achou){
                printf("%c ", palavrasecreta[i]);
            }else{
                printf(" _");
            }
            
        }
        printf("\n");    
     
        char chute;
.        
        scanf(" %c", &chute);

      
        chutes[tentativas] = chute;
        tentativas++;

    } while(!acertou && !enforcou);
}

Quando executo o codigo acontece isso:


A M _ _ _ _ _ _ _

D M E _ _ _ _ _ _

J M E L _ _ _ _ _

G M E L A _ _ _ _

H M E L A N _ _ _

J M E L A N C _ _

D M E L A N C I _

D M E L A N C I A

1 resposta
solução!

Oi Markus,

Identifiquei um pequeno erro no segundo loop for. 😏

O problema está na condição de parada do loop, onde você usa i < tentativas em vez de j < tentativas. 🤔

Isso faz com que o loop compare sempre a mesma letra da palavra secreta com todos os chutes, em vez de comparar cada letra com todos os chutes.

A correção é simples, basta trocar i por j na condição do segundo for.

for(int j = 0; j < tentativas; j++){

Com essa alteração, o código deve funcionar corretamente, imprimindo os acertos e os espaços corretamente. 👍

🎓 Para saber mais: Documentação da função strlen em C

Continue praticando e explorando a linguagem C! 💪