Ir para conteúdo
Fórum Script Brasil
  • 0

Ajuda com o código


Eduardo Felipe

Pergunta

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

Até agora não há respostas para essa pergunta

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...