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

No exemplo da forca, o professor mostra a função checkChute com a variável char letra, sendo que no main() ela é uma char palavraSecreta[20]. O programa funciona, mas não entendi. Para mim, a variável na função deveria ser um char[20].

int checkChute(char chutes[26], char letra, int tentativas){

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

int main(){
    char chutes[26], palavraSecreta[20];

    int tentativas=0;
    sprintf(palavraSecreta, "cruzeiro");

    int acertou=0;
    int errou=0;    
    cabecalho();

    do{

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

        int achou=checkChute(chutes, palavraSecreta[i], tentativas);

        if(achou)
            cout<<" "<<palavraSecreta[i];
            else
                cout<<" _";
    }
        cout<<"\n";

        chuta(chutes, &tentativas);

    }while(!acertou && !errou);
}
3 respostas
solução!

Opa Marco,

Quando você chama a função checkChute, você não passa a palavra secreta inteira, apenas o caractere da posição atual.

checkChute(chutes, palavraSecreta[i], tentativas);

Veja que palavraSecreta é um vetor de char, portanto palavraSecreta[i] é apenas um único char.

Mas como o main interpreta isso, já que no main foi declarado um vetor (palavraSecreta[20])?

Opa,

Desculpa a demora. Quando você acessa uma posição de um vetor de char, no caso palavraSecreta[i], você está pegando o i-ésimo char. Veja se fica mais claro dessa forma:

...
char letra = palavraSecreta[i];
int achou=checkChute(chutes, letra, tentativas);
...