Sie sind auf Seite 1von 4

Algoritmos e Programação I

Segundo Trabalho
Faculdade de Computação
Universidade Federal de Mato Grosso do Sul
79070-900 Campo Grande, MS

O trabalho deverá ser submetido via moodle


(http://moodle.facom.ufms.br)
até 12 de Julho - 23 horas e 55 minutos

Controle de Estoque

Uma determinada rede de lojas possui M lojas espalhadas pelo paı́s1 .


Em cada uma das lojas são comercializados no máximo N produtos dis-
tintos2 , de forma que uma loja i, para 1 ≤ i ≤ M , possui k i produtos,
sendo 1 ≤ k i < N . Para cada um dos produtos de uma loja são armaze-
nadas as seguintes informações: descrição, código, preço de custo, preço de
venda, quantidade em estoque, nome e telefone de contato do fornecedor do
produto. Para cada uma as lojas são armazenadas (ao menos) as seguintes
informações: cidade onde a loja está localizada, número da loja, telefone e
número de produtos cormercializados.

Implemente uma solução para o controle dos estoques de produtos de


cada uma das lojas desta rede.

1
considere que M pode assumir o valor máximo de 100
2
considere que N pode assumir o valor máximo de 500

1
2

Projete sua solução para que três duas situações distintas sejam aborda-
das:

1. Carregamento dos dados: Leitura dos dados cadastrados referentes


às lojas e produtos (estoque)

2. Processamento: Consultas diversas aos dados referentes às lojas e


aos produtos (estoque)

3. Finalização: Armazenamento em arquivo dos dados referentes às lojas


e produtos (estoque).

Considere a existência dos arquivos lojas.txt e produtos.txt contendo os dados


cadastrados para as lojas e para os produtos de cada loja, repectivamente.
Segue a descrição de cada um desses arquivos:
lojas.txt

inteiro M que informa o número de lojas da rede


dados da loja 1
dados da loja 2
dados da loja 3
...
dados da loja M

produtos.txt

inteiro k_1 que informa o número de produtos comercializados pela loja 1


dados do produto 1 da loja 1
dados do produto 2 da loja 1
dados do produto 3 da loja 1
...
dados do produto k_1 da loja 1
inteiro k_2 que informa o número de produtos comercializados pela loja 2
dados do produto 1 da loja 2
dados do produto 2 da loja 2
dados do produto 3 da loja 2
...
dados do produto k_2 da loja 2
...
inteiro k_M que informa o número de produtos comercializados pela loja M
3

dados do produto 1 da loja M


dados do produto 2 da loja M
dados do produto 3 da loja M
...
dados do produto k_M da loja M

Ao iniciar a execução de seu programa faça o Carregamento dos da-


dos. Em seguida, na fase de Processamento, apresente o seguinte menu
de opções aos usuários:

[1 ] Inserir um novo produto no estoque → deve-se solicitar o número da


loja e os dados do produto. Note que a inserção pode não ser possı́vel,
caso não haja mais espaço na estrutura de dados. Caso, após a execução
desta operação, a quantidade em estoque do produto for superior a 40,
deve-se imprimir uma mensagem de advertência como, por exemplo:
”Há estoque suficiente do produto i. Não realiza novas compras deste
produto”, onde i é a descrição do produto.

[2 ] Remover um produto do estoque → deve-se solicitar o número da loja


e o código do produto. Caso, após a execução desta operação, a quan-
tidade em estoque do produto for inferior a 3, deve-se imprimir uma
mensagem de advertência como, por exemplo: ”O estoque do produto
i está muito baixo. Contate o fornecedor deste produto”, onde i é a
descrição do produto. Imprima também os dados (nome e telefone de
contato) do fornecedor do produto.

[3 ] Consultar os dados de um determinado produto no estoque de uma


dada loja → deve-se solicitar o número da loja e o código do produto
a ser consultado.

[4 ] Consultar os dados de um determinado produto no estoque de todas


as lojas → deve-se solicitar o código do produto a ser consultado.

[5 ] Buscar pela loja que possui maior estoque de um determinado produto


→ deve-se solicitar o código do produto a ser buscado.

[6 ] Mostrar os produtos de uma determinada loja em ordem crescente


das quantidades em estoque → deve-se solicitar o número da loja.
4

[7 ] Ordenar (em ordem decrescente) os produtos de todas as lojas pelo


preço de custo3 .

[8 ] Imprimir a descrição de todos os produtos comercializados por cada


uma das lojas.

[9 ] Imprimir as cidades de localização de todas as lojas.

O menu acima deve ser apresentado ao usuário até que o mesmo pressione
as teclas CTRL + d.
Após pressionada as teclas CTRL + d deve-se dar inı́cio a fase de Fina-
lização.

Observação

• Em relação ao item [2 ] do menu de opções, a remoção de um elemento


da linha i e coluna j de uma matriz M (M [i][j]) com C colunas, deve
reposicionar os elemento M [i][k], para j ≤ k ≤ C em uma coluna à es-
querda, eliminando assim o ‘buraco’ deixado pela remoção do elemento
M [i][j]. Veja um exemplo na figura abaixo, onde o elemento M[2][1] foi
removido.

3 7 4 9 1 6 3 7 4 9 1 6 3 7 4 9 1 6
4 3 9 2 2 4 4 3 9 2 2 4 4 3 9 2 2 4
9 5 2 3 5 8 9 2 3 5 8 9 2 3 5 8
1 1 4 9 0 2 1 1 4 9 0 2 1 1 4 9 0 2

• Modularize ao máximo sua implementação, isso deixará seu código


mais claro e organizado. Tende deixar o menor número de instruções
possı́veis na main, substituindo essas instruções por chamadas a funções.

• Implemente, ao menos, uma função para cada um dos itens do menu.

• Idente e comente o seu código.

3
como resultado, a matriz de produtos ficará ordenada!

Das könnte Ihnen auch gefallen