Faça uma função para retornar o número de elementos da pilha que possuem valor par.

Passo 1

Resumo: temos uma pilha e queremos uma função que conte quantos elementos têm valor par. Isso envolve o conteúdo de pilhas e técnicas para percorrer todos os itens sem perder a estrutura original.

Passo 2

Estratégia geral: vamos usar recursão. A cada chamada, verificamos se a pilha está vazia (caso base), senão removemos o topo, contamos recursivamente os pares no restante, checamos se o valor removido é par e depois o empilhamos de volta para restaurar a pilha.

Passo 3

Caso base da recursão: se a pilha estiver vazia (teste com uma função como isEmpty), não há elementos a verificar, então retornamos zero.

Passo 4

Passo recursivo: removemos o elemento do topo (pop), chamamos a função recursivamente para contar pares no restante da pilha, verificamos se o valor removido é par (valor % 2 == 0) e, em caso afirmativo, somamos 1 ao resultado da chamada recursiva. Por fim, empilhamos de volta o valor removido (push) para manter a pilha intacta e retornamos o total obtido.

Resposta

// Exemplo em C
int contarPares(Pilha *p) {
// Caso base: pilha vazia
if (estaVazia§) {
return 0;
}
// Remove o topo para examinar
int x = pop§;
// Conta pares no restante da pilha
int cont = contarPares§;
// Se x for par, incrementa
if (x % 2 == 0) {
cont++;
}
// Restaura a pilha
push(p, x);
return cont;
}

Exercícios relacionados