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

Dúvida no looping

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

int main() {

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

    int acertou = 0;
    int enforcou = 0;

    char chutes[26];
    int tentativas = 0;

    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("_ ");
            }
        }
        printf("\n");

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

        chutes[tentativas] = chute;
        tentativas++;


    } while (!acertou && !enforcou);

}
 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;

                }
            }

Nesse exato ponto do código, o looping percorre a palavra secreta, e o looping interno percorre o array chutes, correto? Ao meu ver, a cada letra digitada, o looping interno percorre todo o array chutes. Como teoricamente, ele pode conter até 26 elementos, isso não acarreta em carga para o processador, mas se fossem gigabytes de informação esse método não poderia ser usado, creio eu(desconsidere o que eu disse se minha interpretação estiver errada). Comecei a aprender C agora, mas em Python, poderia utilizar algo como pop() para descarregar o array chutes e manter somente as letras corretas em outro array, em C existe algo parecido?

4 respostas

Olá, Danival! Tudo bem?

Sua dúvida é muito boa!

No C, o que conheço que mais se aproxima do que procura é o push e o pop.

Essas são as duas operações básicas quando falamos de pilhas. Uma pilha é uma maneira de se organizar e usar dados e informações. É um tipo de estrutura de dados.

Em resumo, a operação push insere um elemento na pilha e a operação pop exclui um elemento da pilha. A última coisa a entrar é a primeira a sair. Funciona como uma pilha de pratos. Quando colocamos 10 pratos, um acima do outro, quando vamos retirar, sempre começamos com o de cima. Veja a imagem abaixo.

Exemplo de como funciona um push e pop. Funcionando como uma pilha de pratos.  Quando colocamos 6 pratos, um acima do outro, quando vamos retirar, sempre começamos com o de cima.

Esse é um assunto extenso, mas muito importante.

Mas acredito que essa introdução possa te ajudar. Nesse outro tópico, um colega do fórum falou muito bem sobre memória. Recomendo a leitura.

Caso eu não tenha deixado claro, estou à disposição!

Abraços.

boa tarde. esclareceu minha dúvida sobre o pop. No caso do ciclo for, minha interpretação foi correta?

solução!

Boa tarde!

Está correto sim, Danival.

grato