Ola pessoal é o seguinte estou tendo problemas em desenvolver essa pilhas; o objetivo e fazer 3 pilhas no sentido de empilhar na pilha1 e desempilhar empilhar na pilha2 desempilhar e empilhar na pilha3, eu fiz aqui uma implementação com 3 pilhas empilhando e desempilhando, na função empilha esta tudo beleza o problema esta no desempilhar, quando eu empilho na pi1[tos1 peço para desempilhar tudo ok ! ai e mesmo elemento que foi desempilhado vou empilhar na pi2[tos2] tudo ok ! ai o mesmo elemento que foi desempilhado eu empilho na pi3[tos3] tudo ok ! o problema começa aqui na pi3[tos3] eu mando desempilhar não desempilhar ele continua a desempilhar a pi2[tos2] não desempilha a pi3[tos3].
Bom pessoal aqui esta o codigo para analise:
#include <stdlib.h>
#include <time.h>
#define MAX 10
int Empilhar (int pi1[], int pi2[], int pi3[],int pi4[], int dado, int num, int aux2);
int Desempilhar(int pi1[], int pi2[], int pi3[],int pi4[], int del);
void Nulos(int pi1[], int pi2[], int pi3[], int pi4[]);
void ExibirPilhas (int pi1[], int pi2[], int pi3[], int pi4[]);
int pi1[MAX],pi2[MAX],pi3[MAX],pi4[MAX],mat[5][3];
int tos1=0,tos2=0,tos3=0,tos4=0,adc,num,aux2=0,aux3=0,aux4=0,dado,del;
int main(){
char op;
Nulos(pi1,pi2,pi3,pi4);
printf("\n\nMenu: \ne - Empilhar\nd - Desempilhar\ni - Inserir\nr - Remover\ns - Sair\n\nDigite sua Opcao: ");
do
{
scanf("%c",&op);
switch (op){
case 'E' :
{
printf("\nDigite a direcao ");
scanf("%d",&num);
printf("\nDigite um valor ");
scanf("%d",&dado);
Empilhar(pi1,pi2,pi3,pi4,dado,num,aux2);
ExibirPilhas(pi1,pi2,pi3,pi4);
scanf("%c",&op);
break;
case 'D' :
{
printf("\nDigite a direcao ");
scanf("%d",&del);
aux2 = Desempilhar(pi1,pi2,pi3,pi4,del);
ExibirPilhas(pi1,pi2,pi3,pi4);
printf("\nRemovido %d",aux2);
}
scanf("%c",&op);
break;
case 'I' :
{
printf("\nDigite a direcao");
scanf("%d",&num);
Empilhar(pi1,pi2,pi3,pi4,dado,num,aux2);
ExibirPilhas(pi1,pi2,pi3,pi4);
scanf("%c",&op);
break;
}
}
}
}
while(op != 'E' && op != 'D');
system("pause");
}
int Empilhar (int pi1[], int pi2[],int pi3[],int pi4[], int dado, int num, int aux2){
if(tos1 > MAX ){
printf("A pilha esta cheia\n");
return;
}else{
if(num == 1){
pi1[tos1]= dado;
tos1++;
}else{
if(tos2 > MAX){
printf("A pilha esta cheia\n");
return;
}else{
if(num == 2){
pi2[tos2]=aux2;
tos2++;
}else{
if(tos3 > MAX){
printf("A pilha esta cheia\n");
return;
}else{
if(num == 3){
pi3[tos3]=aux2;
tos3++;
}else{
if(tos4 > MAX){
printf("A pilha esta cheia\n");
return;
}else{
if(num == 4){
pi4[tos4] = aux2;
tos4++;
}
}
}
}
}
}
}
}
}
int Desempilhar(int pi1[], int pi2[], int pi3[],int pi4[], int del){
tos1--;
if(tos1 < -1){
printf("A pilha esta vazia\n ");
return 0;
}else{
if(del == 1){
return pi1[tos1];
}else{
tos2--;
if(tos2 < -1){
printf("A pilha esta vazia\n ");
return 0;
}else{
if(del == 2){
return pi2[tos2];
}else{
tos3--;
if(tos3 < -1){
printf("A pilha esta vazia\n ");
return 0;
}else{
if(del == 3){
return pi3[tos3];
}else{
tos4--;
if(tos4 < -1){
printf("A pilha esta vazia\n ");
return 0;
}else{
if(del == 4){
return pi4[tos4];
}
}
}
}
}
}
}
}
}
}
void Nulos(int pi1[], int pi2[], int pi3[], int pi4[]){
int aux;
for(aux=0;aux<=MAX;aux++){
pi1[aux]=0;
pi2[aux]=0;
pi3[aux]=0;
pi4[aux]=0;
}
}
void ExibirPilhas(int pi1[], int pi2[], int pi3[],int pi4[]){
int i;
for(i=tos1-1;i>=0;i--){
printf("\n%d",pi1[i]);
}
for(i=tos2-1;i>=0;i--){
printf("\n\t%d",pi2[i]);
}
for(i=tos3-1;i>=0;i--){
printf("\n\t\t%d",pi3[i]);
}
for(i=tos4-1;i>=0;i--){
printf("\n\t\t\t%d",pi4[i]);
}
printf("\n(A)\t(B)\t(C)\t(D)");
}
Pergunta
naldoP
Ola pessoal é o seguinte estou tendo problemas em desenvolver essa pilhas; o objetivo e fazer 3 pilhas no sentido de empilhar na pilha1 e desempilhar empilhar na pilha2 desempilhar e empilhar na pilha3, eu fiz aqui uma implementação com 3 pilhas empilhando e desempilhando, na função empilha esta tudo beleza o problema esta no desempilhar, quando eu empilho na pi1[tos1 peço para desempilhar tudo ok ! ai e mesmo elemento que foi desempilhado vou empilhar na pi2[tos2] tudo ok ! ai o mesmo elemento que foi desempilhado eu empilho na pi3[tos3] tudo ok ! o problema começa aqui na pi3[tos3] eu mando desempilhar não desempilhar ele continua a desempilhar a pi2[tos2] não desempilha a pi3[tos3].
Bom pessoal aqui esta o codigo para analise:
Editado por kuroiAdicionar tag CODE
Link para o comentário
Compartilhar em outros sites
9 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.