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

[Sugestão] Código idêntico ao do professor não imprime a posição da letra digitada (Problema no for)- VSCode.

Olá pessoal,

Tive um problema comum que apareceu bastante aqui no fórum, porém nenhuma solução que eu vi foi a mesma que eu consegui encontrar.

Uso o VS Code e meu programa pedia para digitar a letra e parava, portanto eu achava que o meu Do/While não estava executando, porém o problema era na hora de executar o for.

Acontece que a comparação do for ---- if(palavrasecreta[i] == chute) ----- estava comparando letra minúscula com maiúscula da "MELANCIA". Deixo o código abaixo com minha resolução:

OBS: é só incluir a biblioteca ctype.h (para poder usar o toupper) e o chute = toupper(chute) dentro do do/while, esse código irá converter automaticamente o carácter digitado no chute para maiúscula.

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

int main () {
    char palavrasecreta[20];

    sprintf(palavrasecreta, "MELANCIA");
    
    int acertou = 0;
    int errou = 1;
   
    do {
        char chute;
        printf("Qual a letra?\n");
        scanf("%c", &chute);
        chute = toupper(chute);
              
        
        for (int i = 0; i < strlen(palavrasecreta); i++) {
            
            if(palavrasecreta[i] == chute) {
                printf("A posicao %d tem essa letra!\n", i);
            }            
        }
        
    } while (!acertou && !errou);
    
}
1 resposta
solução!

Olá, Jovaine! Como vai?

Você fez uma ótima observação ao perceber que a comparação entre letras maiúsculas e minúsculas estava causando o problema. Isso ocorre porque, na tabela ASCII, letras maiúsculas e minúsculas são representadas por diferentes valores numéricos, portanto, a comparação entre elas resultará em false.

Então, parabéns por encontrar a solução e obrigado por compartilhar com a comunidade!

Bons estudos!