Buscar

Final Computacao Eletronica Sem. 2016.2 GABARITO ufpe

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; 
}

Outros materiais

Materiais recentes