Вы находитесь на странице: 1из 4

Universidade Federal de São Paulo

Campus São José dos Campos


Instituto de Ciência e Tecnologia (ICT)

Algoritmos e Estruturas de Dados


1o semestre de 2018

Laboratório #3 - lab3.c
Locadora de jogos

Prof. Valério Rosset

1 D EFINIÇÃO DO PROBLEMA
Com a popularização da internet e de plataformas como Netflix, diversas empresas de
vídeo locadoras foram fechando suas portas. Entretanto, nesse mesmo ramo, surgiu o
aluguel de jogos de console, como Xbox ou PS4. Dessa forma você deve desenvolver
um sistema para gerenciar o estoque e locação dos jogos de uma locadora.

TAREFA A

Desenvolva um programa em linguagem C - utilizando lista dinâmica encadeada -


que forneça uma lista com os jogos cadastrados na locadora ordenados pelo preço da
locação. Ao final da execução, seu algoritmo deve informar o lucro obtido pela locação
de cada um dos jogos cadastrados.
O programa deve ser capaz de realizar as operações descritas abaixo:

• Inserir na lista (cadastrar): O programa deve permitir a inserção ordenada de


forma decrescente de jogos de acordo com o lucro informado de cada locação.

• Adição de quantidade ou devolução do jogo: O programa deve permitir a adição


de uma quantidade maior aos jogos disponíveis para locação e a mesma oper-
ação permite a devolução de jogos que foram alugados para a lista.

• Aluguel: O programa deve permitir o aluguel de qualquer jogo cadastrado na


lista.

• Remoção: O programa deve permitir a remoção de qualquer jogo cadastrado.

Prof. Valério Rosset – UNIFESP, Unidade Pq. Tecnológico, sala 05 Page 1 of 4


E-mail: vrosset@unifesp.br
• Contabilização: O programa deve contabilizar o lucro obtido pelo aluguel dos
jogos, de forma individual, por cada jogo.

E NTRADA

A entrada contém um único conjunto de teste, que deve ser lido do dispositivo de
entrada padrão (normalmente o teclado). O conjunto de teste é composto por L + 1
linhas, 1 ≤ L ≤ 100.

1. A primeira linha contém um valor inteiro L, 1 ≤ L ≤ 100, que representa a


quantidade de movimentações (cadastros, locações, adicições ou devoluções e
remoções) que serão realizadas.

2. Em cada uma das L linhas seguintes são dadas as informações. Cada linha
contém um valor inteiro J, 1 ≤ J ≤ 4, que representa a operação desejada,
seguida de um espaço e o restante das informações necessárias para cada
operação:
A opção 1 permite ao usuário inserir um jogo no cadastro. As informações que
vem em seguida são:

• Código do jogo (int)


• Quantidade de exemplares (int)
• Preço da locação (float)
A opção 2 permite aumentar a quantidade disponível para locação de um de-
terminado jogo, sendo esse aumento pode ocorrer porque o jogo foi devolvido
ou porque novos exemplares foram comprados para o acervo da locadora. As
informações que vem em seguida são:

• Código do jogo (int)


• Quantidade adicionada (int)
A opção 3 significa que houve uma locação do do jogo, então ele é removido da
lista. As informações que vem em seguida são:

• Código do jogo (int)


A opção 4 permite excluir um jogo do cadastro. As informações que vem em
seguida são:

• Código do jogo (int)

Para as operações de entrada, considere a sintaxe:

Opção 1:
scanf("%d %d %d %f",&variavel, &codigo, &quantidade, &preço);

Prof. Valério Rosset – UNIFESP, Unidade Pq. Tecnológico, sala 05 Page 2 of 4


E-mail: vrosset@unifesp.br
Opção 2:
scanf("%d %d %d",&variavel, &codigo, &quantidade);

Opção 3:
scanf("%d %d",&variavel, &codigo);

Opção 4:
scanf("%d %d",&variavel, &codigo);

S AÍDA

Como saída padrão, seu programa deve imprimir uma lista com o valor total da locação
de cada jogo cadastrado na lista. Note que quando um jogo é removido do cadastro,
nenhuma informação sobre ele deve ser impressa no final. A saída deve estar orde-
nada pelo preço individual de cada produto, e não pelo valor total de locações. Além
disso, as seguintes mensagens também devem aparecer:

1. Tentativa de cadastro de um jogo já existente na lista: "O jogo já está cadas-


trado".

2. Tentativa de remoção de um jogo que não existe na lista: "Não há".

3. Tentativa de locação de um jogo que não existe na lista: "Não há".

4. Tentativa de compra de um jogo com quantidade 0: "Não há".

5. Tentativa de alteração da quantidade ou devolução de um jogo que não existe


na lista: "Não há".

Ao final da execução, você deverá imprimir o lucro obtido pela locação de cada um
dos jogos.
pular a linha
Para as operações de saída, considere a sintaxe:
printf("%d %f \n", id, lucrototal);
pular a linha
Obs: Lembrando que no final a saída é ordenada pelo preço de aluguel de cada jogo
e não pelo valor total do lucro de locação que deve aparecer na saída.

Entrada Saída
7 O jogo já está cadastrado
1114 3 4.000000
1113 1 4.000000
1213 2 3.000000
1314
31
32
33

Prof. Valério Rosset – UNIFESP, Unidade Pq. Tecnológico, sala 05 Page 3 of 4


E-mail: vrosset@unifesp.br
Entrada Saída
8 O jogo já está cadastrado
1155 1 20.000000
211
1155
31
31
31
31
211

O BSERVAÇÕES

• O tamanho da lista é 100.

• É fundamental que o programa imprima apenas o valor de saída.

• Os exercícios devem ser postados no site http://judge.sjc.unifesp.br.

• Cada aluno deverá postar apenas um exercício dentro da data limite.

• A resolução submetida deve utilizar a estrutura de dados definida no enunciado


do exercício.

• Os plágios serão penalizados. Como não será possível saber quem copiou,
todos os casos envolvidos receberão punições iguais, portanto, não divulgue
seu código.

Prof. Valério Rosset – UNIFESP, Unidade Pq. Tecnológico, sala 05 Page 4 of 4


E-mail: vrosset@unifesp.br

Вам также может понравиться