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

Dúvida no Ex. 1 da Aula 2 - Manipulando Arrays

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








int main(int argc, char *argv[]) {

    char palavrasecreta[20];
    sprintf(palavrasecreta, "MELANCIA");
    int i;
    int acertou = 0;
    int enforcou = 0;

    do {
        char chute;

        printf("Qual letra? ");
        scanf(" %c", &chute);

        for( i = 0; i < strlen(palavrasecreta); i++) {
            if(palavrasecreta[i] == chute) {
                printf("A posição %d tem essa letra\n", i+1);
            }
        }
    } while (!acertou && !enforcou);

}

o codigo esta compilando, porem, nao verifica as posiçoes

2 respostas

Oi Aline,

Tente colocar a palavra diretamente na variavel palavrasecreta.

char palavrasecreta[20] = "MELANCIA";

Lembre-se também que MELANCIA está em caps-lock. A letra digitada também tem que estar para a comparação ser verdadeira. Você pode garantir isso usando a função toupper(chute); da biblioteca #include <ctype.h>

solução!

Oi Aline,

o código, como você postou ele, compila e executa, mostrando quais posições têm a letra que foi chutada.

Apenas, faltou efetivamente contar quantas letras foram acertadas ou quantos erros foram cometidos. Note que o while (!acertou && !enforcou) apenas verifica se tanto a variável acertou vale 0 quanto a enforcou vale 0, também.

Eu usaria essa variável como um contador mesmo (mudando o nome para acertos) e uma verificação depois do for para ver se a pessoa ganhou.

O meu ficou assim:

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

int main(int argc, char *argv[]) {

    char palavrasecreta[20];
    sprintf(palavrasecreta, "MELANCIA");

    int i;
    int acertos = 0;
    int tentativas = 0;
    int erros = 0;

    do {
        char chute;

        printf("Qual letra? ");
        scanf(" %c", &chute);

        for( i = 0; i < strlen(palavrasecreta); i++) {
            if(palavrasecreta[i] == chute) {
                printf("A posição %d tem a letra %c\n", i+1, chute);
                acertos++;
            }
        }
        if (acertos == strlen(palavrasecreta)) {
            printf("\nPARABÉNS!\nVocê acertou todas as letras de: %s\n\n", palavrasecreta);
            return;
        }

        tentativas++;
        erros = tentativas - acertos;
    } while (erros < 7);
    printf("\nENFORCADO!\nA palavra era: %s\n\n", palavrasecreta);
}