Jump to content
Fórum Script Brasil
  • 0

Ajuda com o código


Eduardo Felipe

Question

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 to comment
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152k
    • Total Posts
      651.5k
×
×
  • Create New...