Ir ao conteúdo
  • Cadastre-se
Belmires

C++ <Lista encadeada dificuldade na criação >

Posts recomendados

<CODE>

Boa noite, Sou inciante na programação e estou precisando de ajuda já inicie o trabalho mas tem que inserir varias  funções. o trabalho esta pedindo para criar um software para auxilio   em uma biblioteca e devera conter um menu com a seguintes opções.

[T] Cria nova lista encadeada.

Insere livro/registro na lista.

[E]. Edita registro/livro da lista.

[C] Apresenta a lista de livros/registros.

[L] Libera um livro/registro.

[R] Retira um livro/registro da lista

[X] Encerra a execução do programa

Entre com sua opção:

Cada registro de um livro deve identificar seu titulo, seu autor, seu registro, a editora e a data de sua publicação. as funções mínimas exigidas são: cria lista nova, insere livro mantendo ordem crescente pelo nome da obra, retira um livro da lista, apresenta toda a lista na tela, realiza manutenção de um registro na lista, libera área alocada da memöria, aloca ärea para um registro, e elimina lista. a função que insere um novo livro deve manter a lista ordenada pelo NOME DA OBRA. Se a obra já estiver presente na lista o usuário deve ser avisado e o livro não deve ser inserido.  Além da inserção da obra, o programa deverá possuir funções para a eliminação (DELEÇÃO) de um livro já cadastrado na lista encadeada mantendo a lista ordenada.  Também deve permitir a alteração dos dados de um livro (EDIÇÃO/ALTERAÇÃO) já inserido. 

Esta indo dessa forma .

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <conio.h>
#include <locale.h>
#define MAX 21
// Programa baseado em exemplo PITAGORAS de manipulaçÕ DE pilha
// PROTOTIPOS
void add_livros();
void ctr_livros();
void remove_livros();
void listar_livros();

//ESTRUTURA GLOBAL
typedef struct Acervo{
 char regs[MAX];
 struct Acervo *prox;
};
//VARIÁVEIS GLOBAIS
char regs[MAX];

Acervo *topo;//ponteiro para o topo da pilha

//Código PRINCIPAL
int main(){
    setlocale(LC_ALL, "Portuguese");
 char op;
 topo = NULL;//incializando a pilha como vazia
 do{
  system("cls");
  printf ("\t\t\tArcevo da Biblioteca");
  printf ("\n\n Insere livro/registro na lista.\n");
  printf ("[A] Apresenta a lista de livros/registros.\n");
  printf ("[R] Retira um livro/registro da lista \n");
  printf ("[X] Encerra a execução do programa\n\n");
  printf ("Digite a opcao: ");
  op = toupper(getche()); // Passa letra para maíuscula

  switch(op){
   case'I': add_livros();
     break;
   case'A': listar_livros();
     break;
   case'R': remove_livros();
     break;
   case'X': exit(0);
   default: printf ("\n\nOpcao invalida, digite novamente.\n\n");
  }
  system("PAUSE");
 }while (op != 'S');
return (0);
}

//FUNÇÃO AUXILIAR LER DADOS
void regs_livros()
{
 system("cls");
 printf ("Digite o numero de registro do livro =  ");
 fflush (stdin);
 fgets(regs, MAX, stdin);

}

//FUNÇÃO INSERIR
void add_livros(){
 regs_livros();//chamando a função
 Acervo *pnovo = (Acervo*) malloc(sizeof(Acervo));//alocando memoria para os novos
 strcpy(pnovo -> regs, regs);
 pnovo -> prox = NULL;

 if (topo == NULL)//se a pilha estiver vazia
  topo = pnovo; //topo recebe o novo elemento
 else{
  pnovo->prox=topo; 
  topo=pnovo;
 }

}

//FUNÇÃO EXCLUIR
void remove_livros(){
 Acervo *aux;

 if(topo==NULL){
   printf ("\n\nErro, Registro de livro vazio .\n\n");
   return;
 }
 else{
   aux = topo;
   topo = topo -> prox;
   free(aux);
   printf ("\n Resgistro de livro removido do topo\n");
 }
}

//FUNÇÃO LISTAR
void listar_livros(){
 Acervo *aux;
 aux = topo;
 printf ("\t\t\tEMPILHAMENTO\n\n");
 while(aux != NULL){
      printf ("Livro: %s", aux -> regs);
      aux = aux -> prox;
 }
}


Desde já agradeço quem puder ajudar!

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: minicurso “Como ganhar dinheiro montando computadores”

Gabriel TorresGabriel Torres, fundador e editor executivo do Clube do Hardware, acaba de lançar um minicurso totalmente gratuito: "Como ganhar dinheiro montando computadores".

Você aprenderá sobre o quanto pode ganhar, como cobrar, como lidar com a concorrência, como se tornar um profissional altamente qualificado e muito mais!

Inscreva-se agora!