1
resposta

Função chuta

Na função chuta se passasemos os valores do parametro ," int tentativas" por referência, também seria necessário colocar a variável tentativas++ no escopo da variável main?

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

void abertura(){
    printf("***********************\n");
    printf("     JOGO DA FORCA     \n");
    printf("***********************\n\n");
}
void chuta(char chutes[26], int tentativas){
    char chute;
    scanf(" %c",&chute);

    chutes[tentativas] = chute;

}

int main(void){
    char palavrasecreta[20];

    sprintf(palavrasecreta, "MELANCIA");

    int acertou = 0; // Variáveis declaradas em valores booleanos 0 ou 1.
    int enforcou = 0;

    char chutes[26];
    int tentativas = 0;

    abertura();

    do{
        int i;
        int j;

        for(i = 0; i < strlen(palavrasecreta); i++){// Função strlen retorna a quantidade de caracteres que tem a string selecionada entre parentêses.
            int achou = 0;
            for(j = 0; j < tentativas; j++){
                if(chutes[j] == palavrasecreta[i]){
                    achou = 1;
                    break;
                }
            }
            if(achou){
                printf("%c ",palavrasecreta[i]);
            }else{
                printf("_ ");
            }
        }
        printf("\n");
        // Captura um novo chute.
        chuta(chutes,tentativas);

        tentativas++;

    }while(!acertou  && !enforcou);// Usou operador lógico de negação para inverter o valor das variaveis para 1.
}
1 resposta

Oi Rafael, tudo bom?

A variavel tentativas precisa ser incrementada no escopo de execução (main).

Quando passamos a variavel tentativas por parametro para o método chuta, estamos mudando o contexto. E, dentro do contexto do método chuta a variável tentativas não aponta para a mesma do contexto de execução.

Por isso, ela é incrementada no método main =)

Espero ter solucionado sua duvida.

Abraço e bons estudos!