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_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;
}
}
Pergunta
paulo_camilo
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
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.