2
respostas

[Projeto] Meu codigo sem o for duplo

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

int main()
{
  char palavra [20];
  sprintf(palavra, "melancia");
  int terminou = 0; 
  int acertou = 0;
  char traco [strlen(palavra)];
  char chute;
  do
  {
      printf ("\nDigite uma letra: ");
      scanf (" %c",&chute);
    for (int i = 0 ; i < strlen(palavra) ; i++)
    {
      if (palavra[i] != chute && palavra[i] != traco[i])
      {
        traco[i] = '_';
      }
      else if (chute == palavra[i]) {
        traco[i] = chute;
      }
      printf("%c ", traco[i]);
    }
  }while (!acertou && !terminou) ;
  
}
2 respostas

Olá Pedro!

Que legal que você conseguiu fazer sem o for duplo! Aqui algumas sugestões para você avaliar:

  1. Inicialização do array traco: Você deve inicializar o array traco com underlines ('_') para representar as letras ainda não descobertas. Além disso, não se esqueça de adicionar o caractere nulo '\0' no final para torná-lo uma string válida.

  2. Verificação de acerto: O seu código precisa de uma lógica para verificar se o jogador acertou todas as letras da palavra. Isso pode ser feito verificando se a string traco é igual à string palavra.

  3. Condição de término: Você precisa definir a condição terminou para quando o jogador quiser desistir ou quando todas as tentativas forem usadas (caso você implemente um limite de tentativas).

Aqui está uma sugestão de como você pode modificar o seu código:

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

int main() {
    char palavra[] = "melancia";
    int acertou = 0;
    int terminou = 0;
    char traco[strlen(palavra) + 1];
    char chute;
    
    // Inicializa o array traco com '_'
    for (int i = 0; i < strlen(palavra); i++) {
        traco[i] = '_';
    }
    traco[strlen(palavra)] = '\0'; // Adiciona o caractere nulo no final

    do {
        printf("\nDigite uma letra: ");
        scanf(" %c", &chute);
        
        for (int i = 0; i < strlen(palavra); i++) {
            if (chute == palavra[i]) {
                traco[i] = chute;
            }
        }

        printf("%s\n", traco);

        // Verifica se o jogador acertou a palavra
        if (strcmp(traco, palavra) == 0) {
            acertou = 1;
            printf("Parabéns! Você acertou a palavra!\n");
        }

    } while (!acertou && !terminou);

    return 0;
}

Espero que essas dicas ajudem a melhorar o seu código! Lembre-se de que você pode adicionar mais funcionalidades, como um contador de tentativas, para tornar o jogo mais completo.

Espero ter ajudado e bons estudos!

Muito obrigado pelas dicas :)