1
resposta

Como funciona a variável tentativas no código?

Boa noite. Não consegui entender como a variável tentativas funciona nesse código, tentei fazer um teste de mesa mas não entendi a aplicação dela no programa.

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

int main() {
    //int notas[10]; //ARRAY DE 10 POSICOES, VARIA DE 0 A 9

    char palavrasecreta[20];

    sprintf(palavrasecreta, "MELANCIA"); //SPRINTF: ADD UM \0 COMO ÚLTIMO CARACTERE PARA INDICAR QUE ACABOU A STRING, NOS PERMITE ESCREVER STRINGS DENTRO DE ARRAYS DE CHAR

    int acertou = 0;
    int enforcou = 0;

    char chutes[26];
    int tentativas = 0;

    do {

        for(int i = 0; i < (int)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); //dar um espaco antes de %c faz o scanf ignorar o enter

        chutes[tentativas] = chute;
        tentativas++;


    } while(!acertou && !enforcou); //! representa nao (operador negacao)



    return 0;
}

Principalmente, nessa parte:

chutes[tentativas] = chute;
        tentativas++;

Em chutes[tentativas] = chute, tentativas está igual a 0, pois ela foi inicializada assim. Então ela faz com que o segundo FOR não aconteça, pois j/(0) não é menor que tentativas/(0) . Ao fazer tentativas++, o segundo for é executado, mas qual será o valor do j e de tentativas agora?

1 resposta

Pelo que entendi, a variável "tentativas" é incrementada a cada nova tentativa, e antes de ser incrementada, o valor atual é armazenado no array "chute" no índice correspondente à variável "tentativas".

Portanto, na primeira vez que o código é executado, não há nenhuma tentativa anterior, então o programa não verifica nenhum chute realizado. Na segunda vez, o programa verifica o chute feito anteriormente, e assim por diante, até que você acerte ou até que as chances de tentativas acabem (embora não pareça que essa condição esteja implementada no exemplo que você me enviou).

O valor da variável "tentativas" sempre aumenta em um a cada chute, e o valor da variável "j" começa em 0 e vai até o valor de "tentativas".