1
resposta

Posso fazer a função ler a variável de outra forma?

Eu achei particularmente mais pratico, declarar as variáveis num escopo global, ao invés de deixar como argumento da função chute. (coloquei apenas o trecho que fiz diferente)

char chutes [26];
int tentativas = 0;

int chuta(){
    char chute;
    printf("Qual letra? ");
    scanf(" %c", &chute);

    chutes[tentativas] = chute;
}

Está errado fazer isso nesse caso?

1 resposta

Oi, Leonardo! Tudo bem?

Na programação de fato existem práticas que são mais recomendadas para garantir um código mais limpo, modular e fácil de manter, porém não exatamente uma definição de certo ou errado. Declarar variáveis globais pode funcionar, mas geralmente é preferível evitar isso quando possível, pois podem tornar o código mais difícil de entender e depurar, especialmente em projetos maiores.

No caso apresentado, podemos passar as variáveis como argumentos para a função chuta, o que torna a função mais modular e reutilizável, de acordo com o exemplo:

void chuta(char chutes[], int *tentativas) {
    char chute;
    printf("Qual letra? ");
    scanf(" %c", &chute);

    chutes[*tentativas] = chute;
    (*tentativas)++;
}

int main() {
    char chutes[26];
    int tentativas = 0;

    chuta(chutes, &tentativas);
    // Você pode chamar a função `chuta` quantas vezes precisar
    // e as variáveis `chutes` e `tentativas` serão atualizadas corretamente.
    
    return 0;
}

Nele, a função chuta recebe um array chutes e um ponteiro para tentativas, o que permite que a função atualize o array e incremente o número de tentativas diretamente.

Espero ter ajudado!

Um forte abraço e bons estudos!