Jump to content
Fórum Script Brasil
  • 0

Exercício em Pascal


Warrior Princess

Question

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 to comment
Share on other sites

1 answer to this question

Recommended Posts

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...