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

Return

No seguinte código criado na aulas de CII

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

void abertura() {
    printf("/****************/\n");
    printf("/ Jogo de Forca */\n");
    printf("/****************/\n\n");
}

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

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

int jachutou(char letra, char* chutes, int tentativas) {
    int achou = 0;
    for(int j = 0; j < tentativas; j++) {
        if(chutes[j] == letra) {
            achou = 1;
            break;
        }
    }

    return achou;
}

void desenhaforca(char* palavrasecreta, char* chutes, int tentativas) {

    printf("Você já deu %d chutes\n", tentativas);

    for(int i = 0; i < strlen(palavrasecreta); i++) {

        if(jachutou(palavrasecreta[i], chutes, tentativas)) {
            printf("%c ", palavrasecreta[i]);
        } else {
            printf("_ ");
        }

    }
    printf("\n");

}

int main() {

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

    int acertou = 0;
    int enforcou = 0;

    char chutes[26];
    int tentativas = 0;

    abertura();

    do {

        desenhaforca(palavrasecreta, chutes, tentativas);
        chuta(chutes, &tentativas);

    } while (!acertou && !enforcou);

}

No seguinte bloco é usado o comando return.

int jachutou(char letra, char* chutes, int tentativas) {
    int achou = 0;
    for(int j = 0; j < tentativas; j++) {
        if(chutes[j] == letra) {
            achou = 1;
            break;
        }
    }

    return achou;
}

Não consegui identificar por meio das aulas pra que serviu ou pra quem foi esse retorno, imaginei que seria para usar em outra parte do código mas não identifiquei isso nesse exemplo usado na aula e não compilou o seguinte exemplo resumido ao teste dessa função.

int main(){
    int x = 10;
    return x;
}
int print() {
    printf("%d", x);
}

Entendi errado?

2 respostas
solução!

Oi Jorbralyson!

A função jachutou e seu retorno são usados na função desenhaforca:

if(jachutou(palavrasecreta[i], chutes, tentativas)) {

Neste caso, a função é executada e o retorno é devolvido direto para o if. Poderia ser quebrado em duas linhas:

int achou_chute = jachutou(palavrasecreta[i], chutes, tentativas);

if(achou_chute) {
    ...
}

Se ficar alguma dúvida é só avisar. :) Abraço!

Opa, tudo bom?

Então, não sei se ficou tão claro assim a primeira resposta, então vou esmiuçar um pouco mais...

A função 'JaChutou' faz um loop para verificar se o Chute foi encontrado dentro do array ou não, se sim, retorna 1, senão retorna o valor que foi declarado: 0.

O cara que consome essa função, vai verificar, se o retorno for = 1 ele printa a letra encontrada, senão printa o underline '_'