Escolar Documentos
Profissional Documentos
Cultura Documentos
h>
#include <stdbool.h>
#define tam_max 10
#define tam_min 0
int pilha[tam_max];
int topo = 0;
// declarando as funes da pilha
void empilha();
bool pilhaCheia();
bool pilhaVazia();
void removerTopoPar();
void esvaziaPilha();
void menu(){
int opcao;
do{
system("CLS");
printf("MENU INICIAL: PILHA ESTATICA\n");
printf("1_INSERIR NA PILHA\n");
printf("2_REMOVER ELEMENTO PAR DO TOPO \n");
printf("3_ESVAZIAR PILHA E MOSTRAR SOMA \n");
printf("0_SAIR\n");
printf("ENTRE COM A OPCAO: ");
scanf("%d", &opcao);
switch(opcao){
case 1: empilha(); break;
case 2: removeTopoPar(); break;
case 3: esvaziaPilha(); break;
default: opcao = 0; break;
};
}while(opcao!=0);
}
// Implementar a funcao empilha()
void empilha(){
int valor;
system("CLS");
printf("FUNCAO PARA INSERIR NA PILHA\n");
if(!pilhaCheia()){
printf("ENTRE COM O VALOR A SER INSERIDO\n");
scanf("%d", &valor);
topo++;
pilha[topo] = valor;
printf("VALOR INSERIDO COM SUCESSO!\n");
}else
printf("IMPOSSIVEL INSERIR: PILHA CHEIA!\n");
getch();
}
void removerTopoPar(){
system("cls");
if(!pilhaVazia()){
// Verificar se o elemento do topo par
if(pilha[topo]%2==0){
topo--;
printf("REMOVIDO COM SUCESSO!! \n");
}
else
printf("IMPOSSIVEL REMOVER! ELEMENTO NAO EH PAR\n");
}else
printf("IMPOSSIVEL REMOVER! PILHA VAZIA");
getch();
}
bool pilhaCheia(){
return (topo==tam_max-1);
}
bool pilhaVazia(){
return (topo==-1);
}
void esvaziaPilha(){
int i=0, soma=0;
system("cls");
if(!pilhaVazia()){
for(i=0; i<=topo; i++)
soma = soma + pilha[i];
// esvaziamos a pilha aqui...
topo = -1;
printf("A SOMA DOS ELEMENTOS DA PILHA EH: %d", soma);
}else
printf("A PILHA JA ESTA VAZIA!\n");
getch();
}
int main(){
menu();
system("PAUSE");
return 0;
}