C - pilha dinâmica
#include
#include
#include
//cria a estrutura produto. struct produto
{
int cod, qtde; char nome[10]; float precou; produto *anterior; //endereço de mémoria anterior.
};
produto *novo, *topo = NULL; //cria os ponteiros na memória, para armazenar a estrutura produto.
//Cadastrar
produto *cadastrar(int cod_p, char *nome_p, int qtde_p, float precou_p, produto *ant) //func. de cadastrar
{
novo = new produto; novo -> cod = cod_p; strcpy(novo -> nome, nome_p); novo -> qtde = qtde_p; novo -> precou = precou_p; novo -> anterior = ant; return novo;
}
//Consultar void consultar(int x) // x é nro quer consultar.
{
produto *aux; //cria o ponteiro
aux = topo; while (aux != NULL) //enquanto for de null, cont. procurando. { if (x == aux -> cod) { printf("\n Codigo: %d", aux -> cod); printf("\n Nome: %s", aux -> nome); printf("\n Quantidade: %d", aux -> qtde); printf("\n Preco Unitario: %5.2f", aux -> precou); printf("\n Total: %5.2f", (aux -> qtde * aux -> precou)); }
aux = aux -> anterior; // faz percorrer toda pilha. }
}
void excluir()
{
int valor; produto *p;
valor = topo -> cod; printf("\n O produto %d foi desempilhado!", valor); p = topo; topo = p -> anterior; delete(p);
}
void esvaziar()
{
produto *p;
while (topo != NULL) { p = topo; topo = p -> anterior; delete(p); }
}
void total()
{
float total; produto *aux;
aux = topo;
while (aux != NULL) { total = total + (aux -> qtde * aux -> precou); aux = aux -> anterior; }
printf("\n Total geral do estoque: %7.2f", total);
}
main()
{
int op, cod_pro, qtde_pro, con; char nome_pro[10]; float precou_pro;
do { system("cls");
printf("\n\n"); printf("\n 1 - Cadastrar Produto"); printf("\n 2 - Consultar Produto"); printf("\n 3 - Excluir Produto");