Ir para conteúdo
Fórum Script Brasil
  • 0

Exercício em Pascal


Warrior Princess

Pergunta

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...