Pages

segunda-feira, 11 de julho de 2016

Cadastro de Livros usando Pilha em C

Sistema básico para controlar o cadastro de Livros usando estrutura de Pilha que serão alocados dinamicamente em C.

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>

struct Livros{
char autor[20],titulo[20];
float preco;
int paginas;
};

struct PILHA{
struct Livros l;
struct PILHA *prox;
};

void  imprimirPilha(struct PILHA *pi);
struct PILHA *remover (struct PILHA *pi);

void imprimirPilha(struct PILHA *pi)
{

if(pi != NULL)
{
printf("Autor: %s\nTitulo: %s\nPreco: %2.f\nPaginas: %d\n",pi->l.autor,pi->l.titulo,pi->l.preco,pi->l.paginas);
printf("\n________________________\n");
imprimirPilha(pi->prox);
}
// printf("Cont: %d",cont);
}


struct PILHA *remover(struct PILHA *pi)
{
struct PILHA *pTemp = pi;
struct Livros *lTemp ;
pi = pi->prox;
printf("\n\n\tAutor Removido: %s", pTemp->l.autor);
free(pTemp);
//free(lTemp);
// printf("\n\n\tAutor Removido: %s", pTemp->l->autor);
return pi;
}

int main(){
struct PILHA *p = NULL;
struct Livros l;
int op,cont=0;

do{
system("cls");
printf("1 - Cadastara Livro\n2 - Exibir Livro\n3 - Remover Livro\n0 - Sair");
scanf("%d",&op);
getchar();
switch(op){
case 1: {
struct PILHA *pTemp = malloc(sizeof(struct PILHA));
// struct Livros *lTemp = malloc(sizeof(struct Livros));
printf("Informe o Nome do livro: ");
gets(pTemp->l.autor);
printf("Informe o Titulo do Livro: ");
gets(pTemp->l.titulo);
printf("Informe o Preco do Livro: ");
scanf("%f",&pTemp->l.preco);
getchar();
printf("Informe o numero de Paginas do Livro: ");
scanf("%d",&pTemp->l.paginas);
getchar();
// pTemp->l = lTemp;


pTemp->prox = NULL;

if(p == NULL)
{
p = pTemp;
}else{

pTemp->prox = p;
p = pTemp;

}
cont++;
break;
}
case 2:{
if(p == NULL){
printf("\n\n\tNao ha numeros cadastrados!");

}else{
system("cls");

imprimirPilha(p);
printf("cont: %d",cont);
}
break;
}
case 3:
if(p == NULL){
printf("\n\n\t\tNenhum dados cadastrado");
}
else{
p = remover(p);
cont--;
}
break;
case 0:
break;
default: 
break;
}
getchar();
}while(op!=0);

return 0;
}


Duvidas ou Trabalhos para fazer entre em Contato: marcofernando71@gmail.com

0 comentários:

Postar um comentário