1
resposta

meu código não esta tendo o resultado esperado

Na hora que deveria aparecer as duas letras As e os 6 tracejados, no meu não acontece isso, ja revisei o código todinho letra por letra, ele compila normal e depois que eu escrevo a letra A só aparece os tracejados:

PS C:\Users\User\Desktop\jogodeforca> .\forca.exe


A

PS C:\Users\User\Desktop\jogodeforca>


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

int main (){
    char palavrasecreta [20];

    sprintf(palavrasecreta,"MELANCIA");

    int acertou = 0;
    int enforcou = 1;

    char chutes[26];
    int tentativas = 0;


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

            int achou = 0;

            for(int j = 0; j < 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);

}

1 resposta

Tente digitar as letras em caixa alta. Caracteres maiúsculos e minúsculos de uma mesma letra possuem uma representação interna distinta; apenas a título de curiosidade 'm' tem o código ASCII 109, ao passo que 'M' tem código 77. Se você quiser fazer com que o código funcione com letras minúsculas, adicione a biblioteca ctype.h, e altere o condicional para:

(isalpha(chutes[j]) != 0) && (toupper(chutes[j]) == palavrasecreta[i])