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

Ajuda listas duplamente ligadas!!!


paulo_camilo

Pergunta

Boas a todos, estou com problemas em fazer um trabalho em linguagem c que consiste na criação de um armazém usando listas duplamente ligadas.
Para isso eu criei duas estruturas e ao criar a função para escrever a lista o programa vai a baixo, também estou com dois warnings no programa que não consigo tirar. desde já obrigado pela disponibilidade vou publicar aqui o código para ver se alguém me consegue ajudar!

typedef struct no_produto
{
  char nome[30],marca[30];
  float preço;
  int dia,mes,ano,quantidade;
}produto;

typedef struct no_lista
{
  produto *info;
  struct lista *seg;
  struct lista *ant;
}lista;
 

Funçoes 

lista *mem_lista()           //alocar memoria para a lista
{
    lista *mem;
    if((mem = (lista*)malloc(sizeof(lista))) == NULL)
    {
        printf("\nMemoria insuficiente");
    }
    return mem;
}

produto *mem_produto()   alocar memoria para a estrutura do produto 
{
    produto *mem;
    if((mem = (produto*)malloc(sizeof(produto))) == NULL)
    {
        printf("\nMemoria insuficiente");
    }
    return mem;
}

lista *criarlista()       //criar a lista
{
    lista *l = mem_lista();
    l->seg = NULL;
    l->ant = NULL;
    l->info = NULL;
    return l;
}

void insere_inicio_Lista (lista *l)      // inserir um produto no inicio da lista 
{
    lista *aux_lista;
    produto *aux;
    int testeint;
    float teste;

    assert (l != NULL);
    aux_lista = mem_lista();
    aux=mem_produto();
    printf("\nQual o nome do produto :\n ");
    gets(aux->nome);
    while (strlen(aux->nome) == 0)
    {
        fflush(stdin);
        system("cls");
        printf("\nIntroduziu um nome vazio!\n");
        printf("\nDe o nome do ingrediente: \n");
        gets(aux->nome);
    }
    strupr(aux->nome);      //passar nome para maiusculas
    fflush(stdin);
    system("cls");
    printf("\nQual a marca do produto :\n ");
    gets(aux->marca);
    while (strlen(aux->marca) == 0)
    {
        fflush(stdin);
        system("cls");
        printf("\nIntroduziu uma marca invalida!\n");
        printf("\nDe o nome da marca: \n");
        gets(aux->marca);
    }
    strupr(aux->marca);      //passar marca para maiusculas
    fflush(stdin);
    system("cls");
    do
    {
        teste=0;
        printf("\nDe o preço do produto: \n");
        teste=scanf("%f",&aux->preço);
        scanf("%*[^\n]"); scanf("%*c");
        fflush(stdin);
        system("cls");
        if(aux->preço<=0)
         printf("\nERRO! O preço deve ser positivo!\n");
    }while((teste==0)||(aux->preço<=0));
    do
    {
        teste=0;
        printf("\nDe a quantidade que pretende inserir: \n");
        testeint=scanf("%d",&aux->quantidade);
        scanf("%*[^\n]"); scanf("%*c");
        fflush(stdin);
        system("cls");
        if(aux->quantidade<=0)
         printf("\nERRO! A quantidade deve ser positiva!\n");
    }while((testeint==0)||(aux->quantidade<=0));

    aux_lista->info = aux;
    aux_lista -> seg = l;
    aux_lista -> ant = NULL;
    l -> info ++;
}
void escreve_Lista(lista *l)   //escrever lista
{
    lista *aux=l->info;
    while (aux != NULL)
    {
        printf("\n");
        printf("\nSeccao do produto %s", aux->info->nome);
        printf("\nMarca do produto %s", aux->info->marca);
        printf("\nPreco por unidade %0.2f ", aux->info->preço);
        printf("\nUnidades inseridas %d ", aux->info->quantidade);
        printf("\n");
        aux=aux->seg;
    }
}
 

 

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...