Prática 3
Condições de conclusão
Aberto: quarta-feira, 2 mai. 2018, 10:30
Vencimento: quarta-feira, 16 mai. 2018, 23:55
Uma empresa trabalha com a produção e venda de peças em formato de paralelepípedo de diversos materiais (lição de casa: achar um mercado para isso). Como a empresa é pequena, ela não usa bases de dados, mas guarda as informações em dois arquivos de texto:
- O primeiro arquivo, denominado materiais.txt, tem as informações sobre os materiais utilizados. Ele consiste de uma linha para cada material. sendo que cada linha contém 3 valores: primeiro um número inteiro que é o identificador do material (esse identificador varia entre 1 e o número total de materiais); em seguida, a densidade do material (em gramas por centímetro cúbico, um número real) e por fim o preço de mercado (em reais por kilograma, incluindo centavos). Se a empresa trabalha com N materiais, todos os identificadores 1 a N estão presentes nesse arquivo.
- O segundo arquivo, denominado pecas.txt, é um inventório das peças disponíveis para venda. Ele consiste em uma linha para cada peça, com cada linha possuindo as seguintes informações: primeiro um inteiro que é o número de identificação da peça, em seguida o identificador do material usado na sua construção (referente ao identificador do arquivo anterior), por fim, três valores reais que indicam os tamanhos nas três dimensões da peça. Neste caso, os identificadores são número grandes, e diversos deles não estão presentes (são peças já vendidas).
- Declare um novo tipo de dados (struct) para representar as informações de um material.
- Declare um novo tipo de dados (struct) para representar as informações de uma peça.
- Leia os dados do arquivo materiais.txt e guarde as informações em um std::vector do tipo do material.
- Leia os dados do arquivo pecas.txt e guarde as informações em um std::vector do tipo das peças.
- Gere um arquivo denominado por_preco.txt com as seguintes informações de todas as peças: Identificador da peça, identificador do material, peso total e preço (informações de uma peça por linha). Esse arquivo deve ser ordenado em ordem crescente de preço.
- Gere um arquivo denominado por_peso.txt com as seguintes informações de todas as peças: Identificador da peça, identificador do material, peso total e preço (informações de uma peça por linha). Esse arquivo deve ser ordenado em ordem decrescente de peso.
- Gere um arquivo denominado por_material.txt com as seguintes informações de todas as peças: Identificador da peça, identificador do material, peso total e preço (informações de uma peça por linha). Nesse arquivo, as peças feitas com um mesmo material devem aparecer juntas, com os materiais de identificadores menores aparecendo antes dos com identificadores maiores.
std::sort(begin(v), end(v), [] (MeuTipo const &x, MeuTipo const &y) { return x.a < y.a; });
Note o uso de uma função lambda. Se quiser ordenar em ordem descrescente pelo campo b, basta mudar o código da função para "return x.b > y.b;". A função sort é definida em <algorithm>.
Lembre-se de usar identificadores descritivos, indentar e organizar adequadamente seu código. Essas coisas serão levadas em consideração na avaliação.
Os arquivos necessários estão anexos abaixo.
- 1 maio 2018, 21:23 PM
- 1 maio 2018, 21:23 PM