Enviado em 01/10/2015 - 22:16h
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// Declaração da estrutura produto, com 5 campos
struct produto {
int nro;
char desc[15];
float preco;
int estoque;
struct produto *prox;
};
typedef struct produto ListaProd;
// Função para iniciar a lista com o valor Nulo.
ListaProd* inicia(){
return NULL;
}
// Função para a inserção ordenada (por número) dos produtos
ListaProd* insereOrdem(ListaProd *l, int i, char nome[], float prc, int
est){
ListaProd *p=l, *ant=NULL;
// Alocação e inicialização de valores para o nó "novo".
ListaProd *novo = (ListaProd *) malloc (sizeof(ListaProd));
novo->nro = i;
strcpy(novo->desc, nome);
novo->preco = prc;
novo->estoque = est;
// Produto deve ser inserido no início da lista (primeiro ou inferior)
if (p == NULL || p->nro > i){
novo->prox = p;
return novo; }
else {
// Produto deve ser encadeado no meio (ou final) da lista
while(p!= NULL && p->nro <= i){
ant=p;
p=p->prox;
}
novo->prox = ant->prox;
ant->prox=novo;
return l;
}
}
// Função para exibir os produtos na tela
void imprime(ListaProd *l){
ListaProd *p;
for(p=l; p!=NULL; p=p->prox){
printf("\nNumero: %d",p->nro);
printf(" | Descricao: %s",p->desc);
printf(" | Preco: %.2f",p->preco);
printf(" | Estoque: %d",p->estoque); }
}
// Função principal
int main()
{
ListaProd *l;
int num, nro, est, op=0;
char desc[15];
float m, prc;
l = inicia();
do { system("cls");
printf(" \n\t-------- OPCOES -------- ");
printf(" \n\t1 - Inserir um novo produto ");
printf(" \n\t2 - Listar produtos ");
printf(" \n\t3 - Encerrar ");
printf(" \n\tOpcao: ");
scanf("%d",&op);
switch(op){
case 1: system("cls");
printf(" \n\n--- Novo produto --- ");
printf("\n Numero: ");
canf("%d",&nro);
printf(" Descricao: ");
scanf("%s",&desc);
printf(" Preco: ");
scanf("%f",&prc);
printf(" Estoque: ");
scanf("%d",&est);
l = insereOrdem(l, nro, desc, prc, est);
break;
case 2: system("cls");
printf("\n\n--- Lista de produtos --- \n");
imprime(l);
system("pause>>null");
break;
otherwise: printf(" Opcao invalida ");
}
} while (op != 3);
system("PAUSE>>null");
return 0;
}
Atenção a quem posta conteúdo de dicas, scripts e tal (6)
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
O mínimo que você precisa saber sobre o terminal (parte 2)
O mínimo que você precisa saber sobre o terminal (parte 1)
Como iniciar uma máquina virtual do VirtualBox automaticamente no boot do LUbuntu 18 LTS
Como deixar as abas do Firefox mais fininhas
Mudar o gerenciador de login (GDM para SDDM)
"Tentando" fazer com que programas rodem no Wayland e no X11
Google Chrome não para de escrever no disco (2)
Notebook samsung 550xda não reconhece mais SSD (1)
Isso ta me cansando [RESOLVIDO] (4)
Inicio de uso do Mint 32bits (19)
Notebook instalado com Linux Debian de fábrica dando problema (3)