Criei um cadastro aqui no forum pra ver se alguém consegue me ajudar com um exercício de pilhas na linguagem Pascal, o profº não explicou como se faz e jogou um exercício pra fazer valendo nota ..
"1. Tendo as estruturas abaixo, faça um programa PASCAL que contenha um MENU com as seguintes opções: 1-Cadastrar Produtos, 2-Cadastrar Vendas, 3-Listar Vendas por período, 4-Excluir Vendas, 5-Sair;
O programa deve ter no mínimo as subrotinas descritas. Poderão ter outras subrotinas porém estas não acrescentarão pontuação. Não use variáveis globais.
program ContrVendas;
type
pProduto = ^NodProduto;
pVenda = ^NodVenda;
pItem = ^NodItem;
NodProduto = record
codigo:integer;
nome:string[50];
valorunitario:real;
ant:pProduto;
end;
NodVenda = record
nro:integer;
dataVenda:string[10];
cliente:string[50];
valorTotal:real;
item:pItem;
ant:pVenda;
end;
NodItem = record
produto:integer;
quantidade:integer;
valorTotal:real;
ant:pItem;
end;
procedure menu; forward; (1,0 pt)
function setProdutos (pTopProd:pProduto):pProduto; forward; (1,0 pt)
//cadastra os produtos até ser digitado 'fim' para o nome. O código não poderá repetir na pilha enquanto o programa estiver sendo executado
//lista os produtos da pilha conforme solicitado no cadastro da venda
function setVendas (pTopVenda:pVenda):pVenda; forward; (1,0 pt)
//cadastra a venda até ser digitado 'fim' na data. A numeração da venda será automático e não poderá existir dois número iguais na Pilha. Após ser informado o cliente será solicitado os itens da venda. O Valor Total será armazenado após inserir todos os itens da venda .
//é solicitado uma data e listado as vendas e itens realizadas nesta data
function excVendas (pTopVenda:pVenda):pVenda; forward; (1,0 pt)
//é solicitado um número de venda, é mostrado esta venda (e seus itens) e caso confirme é excluído das pilhas, os itens e a venda.
function setItens :pItem; forward; (1,0 pt)
//cadastra os itens da venda até ser informado '999999' no código do produto. Caso seja informado '0' é mostrado todos os produto da Pilha. Caso seja mostrado um número válido é mostrado a descrição do produto e o valor unitário. Caso não exista mostre a mensagem “Produto Inexistente” e fique solicitando o código do produto até ser digitado um número válido ou 999999. O valor total dos itens deve ser calculado pela quantidade informada multiplicado pelo valor unitário do produto cadastrado.
Pergunta
Warrior Princess
Bom Diaaaa!
Criei um cadastro aqui no forum pra ver se alguém consegue me ajudar com um exercício de pilhas na linguagem Pascal, o profº não explicou como se faz e jogou um exercício pra fazer valendo nota ..
"1. Tendo as estruturas abaixo, faça um programa PASCAL que contenha um MENU com as seguintes opções: 1-Cadastrar Produtos, 2-Cadastrar Vendas, 3-Listar Vendas por período, 4-Excluir Vendas, 5-Sair;
O programa deve ter no mínimo as subrotinas descritas. Poderão ter outras subrotinas porém estas não acrescentarão pontuação. Não use variáveis globais.
program ContrVendas;
type
pProduto = ^NodProduto;
pVenda = ^NodVenda;
pItem = ^NodItem;
NodProduto = record
codigo:integer;
nome:string[50];
valorunitario:real;
ant:pProduto;
end;
NodVenda = record
nro:integer;
dataVenda:string[10];
cliente:string[50];
valorTotal:real;
item:pItem;
ant:pVenda;
end;
NodItem = record
produto:integer;
quantidade:integer;
valorTotal:real;
ant:pItem;
end;
procedure menu; forward; (1,0 pt)
function setProdutos (pTopProd:pProduto):pProduto; forward; (1,0 pt)
//cadastra os produtos até ser digitado 'fim' para o nome. O código não poderá repetir na pilha enquanto o programa estiver sendo executado
procedure getProdutos (pTopProd:pProduto); foward; (1,0 pt)
//lista os produtos da pilha conforme solicitado no cadastro da venda
function setVendas (pTopVenda:pVenda):pVenda; forward; (1,0 pt)
//cadastra a venda até ser digitado 'fim' na data. A numeração da venda será automático e não poderá existir dois número iguais na Pilha. Após ser informado o cliente será solicitado os itens da venda. O Valor Total será armazenado após inserir todos os itens da venda .
procedure getVendas (pTopVenda:pVenda); forward; (1,0 pt)
//é solicitado uma data e listado as vendas e itens realizadas nesta data
function excVendas (pTopVenda:pVenda):pVenda; forward; (1,0 pt)
//é solicitado um número de venda, é mostrado esta venda (e seus itens) e caso confirme é excluído das pilhas, os itens e a venda.
function setItens :pItem; forward; (1,0 pt)
//cadastra os itens da venda até ser informado '999999' no código do produto. Caso seja informado '0' é mostrado todos os produto da Pilha. Caso seja mostrado um número válido é mostrado a descrição do produto e o valor unitário. Caso não exista mostre a mensagem “Produto Inexistente” e fique solicitando o código do produto até ser digitado um número válido ou 999999. O valor total dos itens deve ser calculado pela quantidade informada multiplicado pelo valor unitário do produto cadastrado.
procedure getItens (pTopItem:pItem); forward; (1,0 pt)
//mostra todos os itens da Pilha conforme a venda informada.
procedure excItens (pTopItem:pItem); forward; (1,0 pt)
//apaga todo os nodos da pilha ITENS referente a uma venda
procedure sairVendas (pTopVenda: pVenda); forward; (0,5 pt)
//Ao escolher a opção SAIR no menu, apaga todos os 'nodos' da memória relativo as vendas. Os itens são excluídos no procedimento “excItens”.
procedure sairProdutos (pTopProduto:pProduto); forward; (0,5 pt);
//Ao escolher a opção SAIR no menu, apaga todos os 'nodos' da memória relativo aos produtos."
Sei que é grande :(
Eu comecei assim, mas acho que tá errado isso aí o.O , alguém pode me ajudar?:
Menu = record
type
pProduto = ^NodProduto;
pVenda = ^NodVenda;
pItem = ^NodItem;
NodProduto = record
codigo:integer;
nome:string[50];
valorunitario:real;
ant:pProduto;
end;
NodVenda = record
nro:integer;
dataVenda:string[10];
cliente:string[50];
valorTotal:real;
item:pItem;
ant:pVenda;
end;
NodItem = record
produto:integer;
quantidade:integer;
valorTotal:real;
ant:pItem;
end;
function setProdutos (pTopProd:pProduto):pProduto; forward;
procedure getProdutos (pTopProd:pProduto); foward;
function setVendas (pTopVenda:pVenda):pVenda; forward
procedure getVendas (pTopVenda:pVenda); forward;
function excVendas (pTopVenda:pVenda):pVenda; forward;
function setItens :pItem; forward;
procedure sairProdutos (pTopProduto:pProduto); forward;
procedure excItens (pTopItem:pItem); forward;
procedure sairVendas (pTopVenda: pVenda); forward;
procedure getItens (pTopItem:pItem); forward;
procedure Menu;
var
opc:byte;
p:Pont;
begin
p:=nil;
repeat
writeln;writeln;
writeln('1-Cadastrar Produto');
writeln('2-Cadastrar Venda');
writeln('3-Listar Vendas por Período');
writeln('4-Excluir Vendas');
writeln('5-Sair');
readln(opc);
case opc of
1:p:=Produto(p);
2:Vendas(p);
3:Item(p);
4:p:=Excluir(p);
5:Sair(p);
end;
until (opc = 5);
end;
function Produtos(p:Pont):Pont;
var prim:Pont;
begin
prim:=p; new(p);
write('Digite o nome do produto: ');
readln(p^.nome);
while (p^.nome <> 'fim') do
begin
write('Digite o codigo do produto: ');
readln(p^.codigo);
write('Digite o valor unitario do produto: ');
readln(p^.valorunitario);
p^.ant:=prim;
prim:=p;
new(p);
write('Digite o nome: ');
readln(p^.nome);
end;
dispose(p);
result:=prim;
end;
Link para o comentário
Compartilhar em outros sites
1 resposta 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.