Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Tenho 2 pilhas com valores definidos: pilha1: 592 e pilha2: 3784, tenho q somar as duas pilhas, empilhar em uma terceira pilha e imprimir.
Tentei fazer de um jeito mas n qr dar certo e tenho a impressão q tem uma maneira mt mais facil de se fazer.
o programa para de responder qnd executo
#include <stdio.h>
typedef struct
{
int uni;
int dez;
int cent;
int mil;
int soma;
} TipoItem; TipoItem item;
struct celula *prox;
} Celula; Celula *base;
Celula *topo;
} Pilha;
Pilha pilha; pilha->topo=(Celula*)malloc(sizeof(Celula));
pilha->topo->prox=NULL;
pilha->base=pilha->topo;
} if(pilha.base==pilha.topo)
return 1;
else
return 0;
} Celula *aux;
pilha->topo->item=x;
aux=(Celula*)malloc(sizeof(Celula));
aux->prox=pilha->topo;
pilha->topo=aux;
} *x = pilha->topo->prox->item;
Celula *aux;
aux=pilha->topo;
pilha->topo=aux->prox;
free(aux);
}
}
void Imprime(Pilha pilha)
{
Pilha *pilhaAux;
FPV(&pilhaAux);
TipoItem x;
while(!Vazia(pilha))
{
Desempilha(&pilha, &x);
Empilha(&pilhaAux, x);
}
while(!Vazia(*pilhaAux))
{
Desempilha(&pilhaAux, &x);
printf("%d\n%s\n%s\n", x.mil, x.cent, x.dez, x.uni);
Empilha(&pilha, x);
}
} TipoItem u,d,c,m;
int vai_um;
Pilha *pilha1;
Pilha *pilha2;
Pilha *pilha3;
FPV(&pilha1);
FPV(&pilha2);
FPV(&pilha3);
pilha1->topo->item.uni = 2;
pilha1->topo->item.dez = 9;
pilha1->topo->item.cent = 5;
pilha1->topo->item.mil = 0;
pilha2->topo->item.uni = 4;
pilha2->topo->item.dez = 8;
pilha2->topo->item.cent = 7;
pilha2->topo->item.mil = 3;
Empilha(&pilha1,c);
Empilha(&pilha1,d);
Empilha(&pilha1,u);
Empilha(&pilha2,m);
Empilha(&pilha2,c);
Empilha(&pilha2,d);
Empilha(&pilha2,u);
somaPilha(*pilha1,*pilha2,*pilha3);
}
void somaPilha(Pilha pilha1,Pilha pilha2,Pilha *pilha3)
{
int vai_um;
while(!Vazia(*pilha1) && !Vazia(*pilha2))
{
pilha3->topo->item.uni = pilha1->topo->item.uni + pilha2->topo->item.uni;
if(pilha3->topo->item.uni > 9)
vai_um = pilha3->topo->item.uni - (pilha3->topo->item.uni - 10);
pilha3->topo->item.dez = pilha1->topo->item.dez + pilha2->topo->item.dez + vai_um;
if(pilha3->topo->item.dez > 9)
vai_um = pilha3->topo->item.dez - (pilha3->topo->item.dez - 10);
pilha3->topo->item.cent = pilha1->topo->item.cent + pilha2->topo->item.cent + vai_um;
if(pilha3->topo->item.cent > 9)
vai_um = pilha3->topo->item.cent - (pilha3->topo->item.cent - 10);
pilha3->topo->item.mil = pilha1->topo->item.mil + pilha2->topo->item.mil + vai_um;
}
Imprime(*pilha3);
}Carregando comentários...