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

Desafio do instrutor no Curso C: Avançando na linguagem

Minha duvida é sobre o desafio do instrutor de encaixar a função jachutou dentro da função enforcou, já tentei diversas vezes e sempre tenho como um resultado um bug no contador de erros, pois quando faço o teste e chuto todas as letras erradas funcionam bem, mas quando chuto algumas letras certas e depois outras erradas o loop de erros fica infinito, ou seja, posso chutar quantas vezes erradas for e o loop não se encerra.

2 respostas
solução!

Olá, Renan!

Pelo que você descreveu, parece que o loop de erros não está sendo encerrado corretamente quando você chuta algumas letras certas e depois outras erradas. Para resolver esse problema, é importante verificar a lógica da função enforcou e como ela está tratando os erros.

Uma possível solução seria adicionar uma condição dentro do loop de erros para verificar se a letra chutada já foi chutada anteriormente. Assim, você evita que o contador de erros seja incrementado novamente para uma letra que já foi chutada corretamente.

Aqui está um exemplo de como você pode fazer isso:

void enforcou(char palavraSecreta[], char chutes[], int tentativas) {
    int erros = 0;
    
    for (int i = 0; i < tentativas; i++) {
        if (jachutou(palavraSecreta, chutes, chutes[i])) {
            printf("Você já chutou a letra '%c' e acertou!\n", chutes[i]);
            continue; // Pula para a próxima iteração do loop
        }
        
        if (!chutou(palavraSecreta, chutes, chutes[i])) {
            erros++;
            printf("Você errou o chute da letra '%c'!\n", chutes[i]);
        }
        
        // Restante do código...
    }
    
    // Restante do código...
}

Nesse exemplo, a função jachutou é chamada dentro do loop de erros. Se a letra já tiver sido chutada anteriormente e acertada, uma mensagem é exibida e o loop pula para a próxima iteração, sem incrementar o contador de erros.

Lembre-se de adaptar o código de acordo com a sua implementação atual, mas espero que essa sugestão possa te ajudar a resolver o problema do loop infinito nos erros.

Bons estudos!

A sim, entendi a lógica agora. Obrigado.

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