1
resposta

meu código em c não funciona como esperado

no seguite video: https://cursos.alura.com.br/course/introducao-a-programacao-com-c-parte-2/task/8926 estou programando um jogo de forca em c e quando compilo e executo não tenho o mesmo resultado que no video, quando digito minha letra o programa não preenche os espaços "_" com a letra que digitei. meu código é o seguinte:

#include <stdio.h>

#include <string.h>

int main() {

char palavrasecreta[20];

sprintf(palavrasecreta, "MELANCIA");

int acertou = 0;
int errou = 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 && !errou);

}

1 resposta

Olá, Thiago! Parece que você está se divertindo com a programação em C, isso é ótimo!

Analisando o seu código, percebo que você não está atualizando as variáveis 'acertou' e 'errou' dentro do seu loop do-while. Isso faz com que seu programa continue em um loop infinito e não preencha os espaços "_" com a letra que você digita.

Para resolver isso, você precisa adicionar uma lógica que atualize as variáveis 'acertou' e 'errou' de acordo com as tentativas do usuário. Aqui está um exemplo de como você pode fazer isso:

do {
    int achou = 0;
    for(int i = 0; i < strlen(palavrasecreta); i++) {
        if(chutes[tentativas] == palavrasecreta[i]) {
            achou = 1;
            break;
        }
    }
    if(achou) {
        acertou = 1;
    } else {
        errou = 1;
    }
    // Resto do seu código
} while(!acertou && !errou);

Neste exemplo, se a letra digitada estiver na palavra secreta, a variável 'acertou' é definida como 1, caso contrário, a variável 'errou' é definida como 1. Isso fará com que o loop termine quando o usuário acertar ou errar.

Espero ter ajudado e bons estudos!