Jump to content
Fórum Script Brasil
  • 0

Ajuda listas duplamente ligadas!!!


paulo_camilo
 Share

Question

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

 Share



  • Forum Statistics

    • Total Topics
      149.6k
    • Total Posts
      646.1k
×
×
  • Create New...