Estou tentando desenvolver um algoritmo de uma LOJA de CD's utilizando LSE, o codigo consegue compilar porém quando eu executo e tento acessar a função cadastrar ou remover ele dá erro e feche o executavel. Já testei em vários compiladores e o erro continua, segue o código abaix
#include <stdio.h>
#include <stdlib.h>
//Estrutura que sera utilizada para realizar o cadastros de Mercadorias;
struct cadastro {
int cod;
char cantor[60];
char nomecd[60];
int qntd;
int anofab;
float precovenda;
char produtora[60];
cadastro* prox;
}Cadastro;
//ASSINATURA DAS FUNÇÕES
//FUNÇÃO CADASTRO
void cadastrar(cadastro *inicio, cadastro *fim);
//FUNÇÃO VENDA
void vender (cadastro *inicio, cadastro *fim);
//FUNÇÃO REMOVER
void remover (cadastro *inicio, cadastro *fim);
//FUNÇÃO PESQUISAR - LISTAR (ARVORE BINARIA DE BUSCA)
//BLOCO PRINCIPAL DO CÓDIGO
main (){
int op = 0;
cadastro* inicio;
cadastro* fim;
//MENU PRINCIPAL
while ( op != 5 ) {
printf("\t\t|--------->BEM VINDO A MUSIC STORE<-----------|");
Pergunta
Eduardo Felipe
Estou tentando desenvolver um algoritmo de uma LOJA de CD's utilizando LSE, o codigo consegue compilar porém quando eu executo e tento acessar a função cadastrar ou remover ele dá erro e feche o executavel. Já testei em vários compiladores e o erro continua, segue o código abaix
#include <stdio.h>
#include <stdlib.h>
//Estrutura que sera utilizada para realizar o cadastros de Mercadorias;
struct cadastro {
int cod;
char cantor[60];
char nomecd[60];
int qntd;
int anofab;
float precovenda;
char produtora[60];
cadastro* prox;
}Cadastro;
//ASSINATURA DAS FUNÇÕES
//FUNÇÃO CADASTRO
void cadastrar(cadastro *inicio, cadastro *fim);
//FUNÇÃO VENDA
void vender (cadastro *inicio, cadastro *fim);
//FUNÇÃO REMOVER
void remover (cadastro *inicio, cadastro *fim);
//FUNÇÃO PESQUISAR - LISTAR (ARVORE BINARIA DE BUSCA)
//BLOCO PRINCIPAL DO CÓDIGO
main (){
int op = 0;
cadastro* inicio;
cadastro* fim;
//MENU PRINCIPAL
while ( op != 5 ) {
printf("\t\t|--------->BEM VINDO A MUSIC STORE<-----------|");
printf("\n_______________________________________________________________________________\n\n");
printf("\t\t\t|---------->MENU<----------|");
printf("\n\t\t\t|__________________________|\n");
printf("\t\t\t| 1 - CADASTRAR |\n");
printf("\t\t\t| 2 - VENDER |\n");
printf("\t\t\t| 3 - PESQUISAR |\n");
printf("\t\t\t| 4 - EXCLUIR |\n");
printf("\t\t\t| 5 - SAIR DO PROGRAMA |\n");
printf("\t\t\t|__________________________|\n");
printf("\t\t\t\n\t\t\t Agora, entre com sua opcao: \a");
scanf ("%d",&op);
system ("cls");
switch ( op ){
// CADASTRAR
case 1:{
printf("\t\t|--------->CADASTRO DE PRODUTOS<-----------|");
printf("\n_______________________________________________________________________________\n\n");
cadastrar (inicio, fim);
}
// VENDER
case 2:{
printf("\t\t|--------->VENDA DE PRODUTOS<-----------|");
printf("\n_______________________________________________________________________________\n\n");
vender (inicio, fim);
}
//PESQUISAR
case 3:{
break;
}
//EXCLUIR
case 4:{
printf("\t\t|--------->REMOÇÃO DE PRODUTOS<-----------|");
printf("\n_______________________________________________________________________________\n\n");
remover (inicio, fim);
}
//SAIR DO PROGRAMA
case 5:{
printf("\n\t A MUSIC STORE AGRADECE!\n\n");
getchar(); // ESPERA O USUARIO PRESSIONAR ALGUMA TECLA PARA CONTINUAR A EXECUÇÃO DO CÓDIGO
break;
}
//OUTROS NUMEROS DIGITADOS
default :
printf("Opcao Invalida!");
break;
}// FIM MENU
} // FIM ESTRUTURA DE REPETIÇÃO
system ("pause");
}//FIM DO CÓDIGO PRINCIPAL
// PROCEDIMENTO DE CADASTRO
void cadastrar (cadastro *inicio, cadastro *fim){
cadastro *novo;
novo = (cadastro *) malloc (sizeof (cadastro));
if (inicio == NULL){
inicio = novo;
fim = novo;
}
else {
fim -> prox = novo;
fim = novo;
}
fim -> prox = NULL;
printf ("\nCodigo do Produto (Digite Apenas Números)\n");
scanf ("%d",&novo->cod);
fflush (stdin);
printf("\nProdutora:\n");
gets(novo->produtora);
fflush (stdin); // LIMPA O REGISTRO DAS TECLAS DIGITAS PELO O USUÁRIO NO SISTEMA
printf("\nNome do CD:\n");
gets(novo->nomecd);
fflush (stdin);
printf("\nNome do cantor[a] ou banda:\n");
gets(novo->cantor);
fflush (stdin);
printf("\nAno de Fabricacao:\n");
scanf("%d",&novo->anofab);
fflush (stdin);
printf("\nPreco de Venda:\n");
scanf("%f", &novo->precovenda );
fflush (stdin);
printf ("\nQuantidade de CDs Comprados:\n");
scanf ("%d",&novo->qntd);
fflush (stdin);
printf("\nCadastro Realizado com Sucesso!\n\n");
system ("pause");
system("cls");
} // FIM DO CADASTRO
//REMOVER
void remover (cadastro *inicio, cadastro *fim){
cadastro *aux;
cadastro *ant;
aux = inicio;
ant = inicio;
int busca;
printf ("DIGITE O CODIGO DO PRODUTO:\n");
scanf ("%d",&busca);
fflush (stdin);
while (aux != NULL){
if (aux->cod == busca){
if (aux == inicio && aux == fim){
inicio = NULL;
fim = NULL;
free (aux);
break;
}
else if (aux == inicio) {
inicio = aux ->prox;
free (aux);
break;
}
else if (aux == fim) {
fim = ant;
free (aux);
break;
}
else {
ant -> prox = aux -> prox;
free (aux);
}
}// FIM ESTRUTURA CONDICIONAL
ant = aux;
aux = aux -> prox;
}//FIM ESTRUTURA DE REPETIÇÃO
}//FIM DO PROCEDIMENTO DE REMOVER
//PROCEDIMENTO DE VENDA
void vender (cadastro *inicio, cadastro *fim){
cadastro *aux;
aux = inicio;
int busca;
printf ("DIGITE O CÓDIGO DO PRODUTO:\n");
scanf ("%d",busca);
fflush (stdin);
while (aux -> prox != NULL){
if (aux->cod == busca){
aux -> qntd = aux -> qntd - 1;
break;
}
else {
aux = aux -> prox;
}
}
}
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.