Gostaria de recolher informações para um programa que estou fazendo, na verdade um programa de uma livraria...está quase pronto. o programa lê os livros inserido, isere mais livros e remove os livros a partir de seu codigo inscrito...o problema que estou encontrando é na parte de remover os livros...não sei porque quando tento remover o compilador c++ builder trava do nada....se puderem dar sugestoes agradeço.
Peço desculpas mas terei que colocar o código inteiro para ficar entendivel.
Agradeço desde já qualquer sugestão.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
struct livro{
struct livro *prox;
int codigo;
char nome [50];
char autor [50];
char genero [50];
int ano;
float preço;
};
void insere_lista(struct livro **inicio);
int menu();
void consulta(struct livro *lista);
void remove_lista(struct livro **endlista,struct livro *lista);
Pergunta
thunder
Boa tarde a todos,
Gostaria de recolher informações para um programa que estou fazendo, na verdade um programa de uma livraria...está quase pronto. o programa lê os livros inserido, isere mais livros e remove os livros a partir de seu codigo inscrito...o problema que estou encontrando é na parte de remover os livros...não sei porque quando tento remover o compilador c++ builder trava do nada....se puderem dar sugestoes agradeço.
Peço desculpas mas terei que colocar o código inteiro para ficar entendivel.
Agradeço desde já qualquer sugestão.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
struct livro{
struct livro *prox;
int codigo;
char nome [50];
char autor [50];
char genero [50];
int ano;
float preço;
};
void insere_lista(struct livro **inicio);
int menu();
void consulta(struct livro *lista);
void remove_lista(struct livro **endlista,struct livro *lista);
int main(){
struct livro *inicio=NULL;
int opcao=0, pos;
char elem;
while (opcao!=4){
opcao=menu();
switch (opcao){
case 1:
insere_lista(&inicio);
break;
case 2:
consulta(inicio);
system("pause>null");
break;
case 3:
remove_lista(&inicio, inicio);
printf("\n Elemento Removido: %s\n",elem);
system("pause>null");
break;
case 4: exit(1);
}
}
}
int menu(){
int op;
system("cls");
printf("========================================\n");
printf("= Sistema de Gerenciamento de Livraria =\n");
printf("========================================\n");
printf("\nOpcoes:\n");
printf("\n 1. Inserir novo livro");
printf("\n 2. Consultar livros");
printf("\n 3. Excluir livro");
printf("\n 4. Sair\n");
printf("\n Informe a opcao desejada: ");
scanf("%d",&op);
return op;
}
void insere_lista(struct livro **inicio){
struct livro *novo;
novo = (struct livro*) malloc(sizeof(struct livro));
system("cls");
printf("==================================\n");
printf("= 1. Inserir novo livro =\n");
printf("==================================\n");
fflush(stdin);
printf("\nInforme o codigo do livro: ");
scanf("%d", &novo->codigo);
fflush(stdin);
printf("Informe o nome do livro: ");
gets(novo->nome);
fflush(stdin);
printf("Informe o autor do livro: ");
gets(novo->autor);
fflush(stdin);
printf("Informe o genero do livro: ");
gets(novo->genero);
printf("Informe o ano do livro: ");
scanf("%i", &novo->ano);
printf("Informe o preço do livro: ");
scanf("%f", &novo->preço);
if ( (*inicio) == NULL ){
(*inicio) = novo;
(*inicio)->prox = NULL;
} else {
novo->prox = (*inicio);
(*inicio) = novo;
}
}
void consulta(struct livro *lista){
printf("\n Imprimindo a Lista Singularmente Encadeada \n");
int i = 1;
while(lista != NULL) {
printf("\n=====================================");
printf("\nCodigo do Livro: %d", lista->codigo);
printf("\nNome: %s", lista->nome);
printf("\nAutor: %s", lista->autor);
printf("\nGenero: %s", lista->genero);
printf("\nAno: %i", lista->ano);
printf("\nPreço: %f", lista->preço);
printf("\n=====================================");
lista=lista->prox;
i++;
}
}
void remove_lista(struct livro **endlista,struct livro *lista){
struct livro *aux = lista;
int num;
fflush(stdin);
printf("\nInforme o codigo do livro a ser excluido: \n");
scanf("%d",&num);
while (lista->prox!=NULL){
if (lista->codigo==num){
aux->prox=lista->prox;
free(lista);
}else{
aux=lista;
lista=lista->prox;
}}} // fecha else } // fecha while } // fecha remove
A parte do remove aqui no final não funciona...não sei porque.
Link para o comentário
Compartilhar em outros sites
0 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.