Você está na página 1de 4

#include <stdio.

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;

}

Você também pode gostar