Ir para conteúdo
Fórum Script Brasil

paulo_camilo

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Posts postados por paulo_camilo

  1. 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;
        }
    }
     

     

×
×
  • Criar Novo...