Baixe o app para aproveitar ainda mais
Prévia do material em texto
Observações gerais: 1) Preencher os dados do cabeçalho do bloco de provas e na folha de questões o nome e a turma; 2) Ao final da prova entregar ao professor ou fiscal a folha de questões e o caderno de prova; 3) O quesito vale dez pontos. 1º quesito: Uma loja de tecidos precisa de um programa que auxilie no controle do estoque dos tecidos e na venda dos produtos. O arquivo Estoque.file contém informações sobre produtos vendidos na loja. Um produto contém os seguintes atributos: código, cor, quantidade no estoque em metros e preço por metro. Escreva um programa em C da seguinte forma: a) Declare o tipo “Produto” como sendo uma estrutura com os campos indicados na tabela acima. b) Escreva uma função void Le_arquivo(Produto v[200]) que lê os produtos no arquivo Estoque.file e os armazena em um vetor do tipo Produto de tamanho máximo 200, recebido como parâmetro. c) Implemente a função altera_estoque(Produto* p, float quant) que altera a quantidade do produto no estoque. d) Crie a função void calcula_venda(Produto p[200], int id) que possui como entradas o vetor do tipo Produto e o código de identificação de um produto. Dentro desta função, imprima o preço e a quantidade no estoque do tecido. Em seguida, pergunte se o usuário deseja comprar. Caso positivo então: i) pegunte quantos metros de tecido deseja; ii) Imprima na tela o valor da compra (quantidade de metros * preço por metro); iii) chame a função void altera_estoque(Produto* p, float quant) para atualizar a quantidade deste tecido no estoque (a variável quant se refere a quantidade de tecido que o comprador deseja comprar). e) Crie um menu com as seguintes opções: 1 - Consultar produto 2 - sair do programa. Caso o usuário escolha a opção 1, leia o código do produto que deseja pesquisar e em seguida chame a função void calcula_venda(Produto v[200], char id_produto[5]) f) Depois de sair do menu, mas antes de encerrar o programa, atualize o arquivo "Estoque.dat", ou seja, grave as informações alteradas. Feche o arquivo e finalize o programa. Observações: i) É proibido usar variáveis globais; ii) o aluno pode escolher o uso de arquivos binários ou texto. ÁREA II – CCEN / UFPE Disciplina: IF 165 – Computação Eletrônica – Exercício Final 2016.2 Data: 15/12/2016 Nome legível do aluno: ................................................................................................. Turma ......... id cor quant preco inteiro string(10) float float Produto #include <stdio.h> #include <stdlib.h> #include <string.h> #define N 200 typedef struct{ int id; char cor[10]; float quant, preco; }Produto; void Le_arquivo(Produto p[]){ int i; FILE * arq = fopen("Estoque.dat","r+"); for(i=0; i<N; i++){ fscanf(arq,"%d %s %f %f", &p[i].id, p[i].cor, &p[i].quant, &p[i].preco); } fclose(arq); } void altera_estoque(Produto* p, float b){ p->quant = p->quant - b; } void calcula_venda(Produto v[], int id){ int i = 0, q = 0; float quant; while(v[i].id != id) i++; printf("preco: %f\t quantidade no estoque: %f\n", v[i].preco, v[i].quant); printf("\ndeseja comprar ? [1 ou 0] "); fflush(stdin); scanf("%d", &q); Critérios de correção: (1) 1,00 estrutura (2) 1,00 função Le_arquivo (3) 1,00 funcao altera_estoque (4) 2,00 funcao calcula_venda (5) 1,00 declaração de variáveis (6) 1,00 abertura/fechamento dos arquivos (7) 1,00 leitura/escrita em arquivo (8) 2,00 menu da função principal if(q > 0 ){ printf("\nquantidade de metros: "); fflush(stdin); scanf("%f", &quant); altera_estoque(&v[i], quant); printf("\n valor da compra: %f", quant*v[i].preco); } } int main() { Produto v[N]; int i,j=1; int id_prod; Le_arquivo(v); while(j == 1){ printf("\ndigite 1 para consulta ou 0 para sair: "); fflush(stdin); scanf("%d", &j); if(j > 0){ printf("\n digite código do produto: "); fflush(stdin); scanf("%d", &id_prod); calcula_venda(v, id_prod); } } FILE * arq = fopen("Estoque.dat","r+"); for(i=0; i<N; i++) fprintf(arq,"%d %s %f %f", v[i].id, v[i].cor, v[i].quant, v[i].preco); fclose(arq); return 0; }
Compartilhar