2
respostas

Estou com dúvida no loop FOR.

Esse código é parte do código relacionado ao jogo da forca. No segundo FOR, inicialmente o valor de j=0 e tentativas =1. Depois j é incrementado e passa a ser igual a 1. Nesse caso, o loop não deveria parar, pois j = tentativas? Tentativas só incrementa fora do FOR.

    do {
        for(int i = 0; i < 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("_ ");
            }
        }
2 respostas

Acho que entendi. A cada volta do FOR relacionado a i, o j é zerado. É isso?

Olá, Luciano! Tudo bem?

Isso mesmo!

Quando ele inicia o primeiro for, enquanto a condição i < strlen(palavrasecreta) for satisfeita, esse loop será executado. Como temos um outro for dentro dessa condição, enquanto j < tentativas ele será executado.

Assim que a condição j < tentativas passar a ser falsa, o programa retorna para o primeiro for e verifica se i < strlen(palavrasecreta) é verdadeira. Se sim, o segundo for será executado e j valerá zero novamente, visto que declaramos int i = 0.

Espero ter ajudado!

Abraços e bons estudos :)