procedure <Ident>; <declarações> begin <comandos> end;
program RedeLojas;
type
VetorProdutos = array[1..5] of string[10];
VetorLojas = array[1..3] of string[2];
MatrizEstoque = array[1..3, 1..5] of integer;
var
Produtos: VetorProdutos;
Lojas : VetorLojas;
Estoque : MatrizEstoque;
Opcao : integer;
(*********************************************)
procedure LerDados;
var
I, J : integer;
begin
{ Leitura dos produtos }
writeln('Digite os 5 produtos');
for I := 1 to 5 do
readln(Produtos[I]);
{ Leitura das lojas }
writeln('Digite as 3 lojas');
for I := 1 to 3 do
readln(Lojas[I]);
{ Leitura do estoque por loja }
writeln('Digite o estoque dos produtos por loja');
for I := 1 to 3 do
for J := 1 to 5 do
readln(Estoque[I,J]);
end;
(*********************************************)
{ (1) estoque de um dado produto numa dada loja }
procedure EstoqueProdutoLoja;
var
Produto : string[10];
Loja : string[2];
P, L, I, J: integer;
begin
write('Digite o produto:'); readln(Produto);
for I := 1 to 5 do
if Produtos[I] = Produto then
P := I;
write('Digite a loja:'); readln(Loja);
for J := 1 to 3 do
if Lojas[J] = Loja then
L := J;
writeln('Estoque do produto ', Produto, ' na loja ', Loja, ':', Estoque[L,P]);
end;
(*********************************************)
{ (2) estoque de um dado produto }
procedure EstoqueProduto;
var
Produto : string[10];
Quant,
P, L, I, J: integer;
begin
write('Digite o produto:'); readln(Produto);
for I := 1 to 5 do
if Produtos[I] = Produto then
P := I;
Quant := 0;
for J := 1 to 3 do
Quant := Quant + Estoque[J,P];
writeln('Estoque do produto ', Produto, ':', Quant);
end;
(*********************************************)
{ (3) estoque de uma dada loja }
procedure EstoqueLoja;
var
Loja : string[2];
Quant,
L, I, J: integer;
begin
write('Digite a loja:'); readln(Loja);
for J := 1 to 3 do
if Lojas[J] = Loja then
L := J;
Quant := 0;
for I := 1 to 5 do
Quant := Quant + Estoque[L,I];
writeln('Estoque da loja ', Loja, ':', Quant);
end;
(*********************************************)
{ (4) loja em que um dado produto apresenta menor estoque }
procedure MenorEstoqueProduto;
var
Produto : string[10];
Quant,
P, L, I, J: integer;
begin
write('Digite o produto:'); readln(Produto);
for I := 1 to 5 do
if Produtos[I] = Produto then
P := I;
Quant := Estoque[1,P];
L := 1;
for J := 2 to 3 do
if Estoque[J,P] < Quant then
begin
Quant := Estoque[J,P];
L := J;
end;
writeln('Loja ', Lojas[L], ' tem o menor estoque (', Quant,
') do produto ', Produto);
end;
(*********************************************)
procedure MenorEstoqueLoja;
{ (5) produto com menor estoque em uma dada loja }
var
Loja : string[2];
Quant,
P, L, I, J: integer;
begin
write('Digite a loja:'); readln(Loja);
for J := 1 to 3 do
if Lojas[J] = Loja then
L := J;
Quant := Estoque[L,1];
P := 1;
for I := 2 to 5 do
if Estoque[L,I] < Quant then
begin
Quant := Estoque[L,I];
P := I;
end;
writeln('O produto ', Produtos[P], ' tem o menor estoque na loja ', Loja);
end;
BEGIN
LerDados;
repeat
writeln('1 - Estoque de Produto em Loja');
writeln('2 - Estoque de Produto');
writeln('3 - Estoque em Loja');
writeln('4 - Menor Estoque de Produto');
writeln('5 - Menor Estoque em Loja');
writeln('6 - Sair');
readln(Opcao);
case Opcao of
1: EstoqueProdutoLoja;
2: EstoqueProduto;
3: EstoqueLoja;
4: MenorEstoqueProduto;
5: MenorEstoqueLoja;
end;
until Opcao = 6;
END.
52) Modularizar o programa implementado em resposta à questão 51.
function <Ident> : <Tipo>; <declarações> begin <comandos> end;
function DefineProduto (Produto : string) : integer;
var
I : integer;
begin
for I:= 1 to 5 do
if Produtos[I] = Produto then
DefineProduto := I;
end;
procedure EstoqueProduto;
var
Produto : string[10];
J, P, Quant : integer;
begin
readln(Produto);
P := DefineProduto(Produto);
Quant := 0;
for J := 1 to 3 do
Quant := Quant + Estoque[J,P];
writeln(Quant);
end;
53) Implementar função que, dada uma loja, retorna o índice dessa e reescreva o procedimento EstoqueLoja.