Buscar

3EE Computacao Eletronica Sem. 2016.2 GABARITO ufpe

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 3 páginas

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; 
 
 
1º quesito: Uma lanchonete deseja aumentar as vendas estimulando seus garçons em uma competição, cujos 
ganhadores são: i) o maior vendedor (que vendeu mais produtos); ii) e o melhor vendedor (aquele que 
obteve maior vendagem). Para isso deseja-se criar um programa que alimente diariamente os dados dessa 
competição. No final de cada dia, um garçom executa o programa e preenche as novas informações da 
competição. Dessa forma, o programa deverá realizar as seguintes funcionalidades: 
 
a) Ler o arquivo item.dat que possui a lista de 65 produtos, os quais são representados por uma estrutura 
Item formada por uma string de 5 caracteres (identificador do item) e o preço de venda do item (float). 
Todos os registros do arquivo deverão ser guardado em um vetor com 65 posições; 
 
b) Ler o arquivo garcons.dat que possui a lista de 25 garçons da lanchonete. Estes são representados por 
uma estrutura “Garcom” contendo: o nome do garçom (string de com 10 caracteres), quantidade de itens 
vendidos por ele e seu faturamento. Os dados deverão ser guardados em um 2o vetor com 25 posições; 
 
c) Em seguida, o programa deve atualizar as novas vendas de um garçom (quantidade de itens vendidos e 
faturamento). Para isso, o programa procede da seguinte maneira: 
1) Pergunta se o usuário deseja atualizar informações para um dado garçom. Caso positivo, pergunta 
o nome do garçom e procura-o na lista. Caso o garçom não esteja cadastrado, pergunta 
novamente (e repetidamente) se deseja atualizar os itens para um garçom, até ser digitado o 
nome de um garçom existente. Caso não queira atualizar, vai para o item 6 a fim de imprimir 
os resultados; 
 
2) Solicita o código de um item para que seja recuperado seu preço de venda. 
 
3) Solicita a quantidade de vezes que o item foi vendido pelo garçom, para que sejam atualizados os 
dados deste garçom no respectivo vetor utilizando a função: 
void atualiza_garcom(Garcom *p, float quant_item, float preco_item); 
 
Obs: faturamento de um item = (quantidade do item)*(preço do item) 
 
4) Em seguida, pergunta se deseja atualizar um novo item para este garçom. Caso positivo, retorna 
para o item anterior (2), caso negativo vai para o item 1; 
 
5) Repita o item 1 até que o usuário não queira mais atualizar os dados de vendas dos garçons; 
 
6) Por fim, o programa deve imprimir : 
i) a lista de todos os garçons, com a quantidade de itens vendidos e o valor do faturamento 
das vendas; 
ii) o nome do Garçom com maior número de vendas até o momento; 
iii) o nome do Garçom que obteve o maior faturamento até o momento; 
 
7) Após a impressão dos resultados, o arquivo garcons.dat precisa ser atualizado com os dados do 
vetor de garçons. Neste caso, desconsidere o arquivo atual, crie um novo, e escreva os dados no 
arquivo. 
 
Observações: i) É proibido usar variáveis globais; ii) função útil: strcmp(char a[], char b[]) que compara 
duas strings e retorna zero caso elas sejam iguais; iii) o aluno pode escolher o uso de arquivos binários ou 
texto. 
 
 
 
ÁREA II – CCEN / UFPE 
Disciplina: IF 165 – Computação Eletrônica – 3º Exercício Escolar 2016.2 Data: 29/11/2016 
Nome legível do aluno: ................................................................................................. Turma ......... 
 
 
 
 
 
#include <stdio.h> 
#include <string.h> 
#define Ng 3 
#define Nitens 6 
 
typedef struct{ 
 char id[5]; 
 float preco; 
}Produto; 
 
typedef struct{ 
 char nome[10]; 
 int q_item; 
 float q_acumulado; 
}Garcom; 
 
void atualiza_garcom(Garcom *p, int 
a, float b){ 
 p->q_item = p->q_item + a; 
 p->q_acumulado = p->q_acumulado + a * b; 
} 
 
int main() 
{ 
 Produto V[Nitens]; 
 Garcom U[Ng]; 
 char nome[10], nome_prod[5]; 
 int i,t=1,w=1,id_nome, id_prod, prod_quant, maior = 0, id_maior, id_melhor; 
 float melhor = 0.; 
 
 FILE* entrada = fopen("item.dat","r"); 
 FILE* entrada2 = fopen("garcons.dat","r+"); 
 
 for(i=0; i<Nitens; i++){ 
 fscanf(entrada,"%s %f", V[i].id, &V[i].preco); 
 printf("%s \t%f\n", V[i].id, V[i].preco); 
 } 
 fclose(entrada); 
 for(i=0; i<Ng; i++){ 
 fscanf(entrada2,"%s %d %f", U[i].nome, &U[i].q_item, &U[i].q_acumulado); 
 printf("%s \t%d \t%f\n", U[i].nome, U[i].q_item, U[i].q_acumulado); 
 } 
 while(t == 1){ 
 printf("deseja cadastrar um participante [sim=1/ nao=0]?"); 
 fflush(stdin); scanf("%d",&t); 
 if(t==1){ 
 printf("digite o nome: "); 
 fflush(stdin);scanf("%s", nome); 
 id_nome = -1; 
 for(i=0; i<Ng; i++){ // procurando participante na lista 
 if(strcmp(nome, U[i].nome) == 0) 
 id_nome = i; 
 } 
 w=1; 
 while(w==1){ 
 prod_quant = 0; 
 printf("deseja cadastrar um produto [sim=1/ nao=0]?"); 
 fflush(stdin); scanf("%d",&w); 
 if(w == 1) 
 { 
 printf("digite o codigo do produto: "); 
 fflush(stdin);scanf("%s", nome_prod); 
 printf("digite o quantidade deste produto: "); 
 fflush(stdin);scanf("%d", &prod_quant); 
 for(i=0; i<Nitens; i++){ 
 if(strcmp(nome_prod, V[i].id) == 0) 
 id_prod = i; 
 } 
 atualiza_garcom(&U[id_nome], prod_quant, V[id_prod].preco); 
 } 
 } 
 } 
 } 
 
 
Critério de correção 
• 1,50pt estruturas 
• 1,00pt declaracao das variáveis 
• 1,00pt abertura e fechamento dos arquivos 
• 1,50pt declaração da funcao e chamada no programa 
• 1,00pt leitura dos arquivos 
• 2,50pt estrutura que permite atualizar o arquivo 
Garcons.dat 
• 1,00pt impressão dos resultados na tela 
• 0,50pt escrita no arquivo 
Subtrair até 4,0 pontos referentes a erros na estrutura geral do 
programa 
 
 
 
 
 
 
 
 for(i=0; i<Ng; i++){ 
 if(U[i].q_item > maior){ 
 maior = U[i].q_item; 
 id_maior = i; 
 } 
 if(U[i].q_acumulado > melhor){ 
 melhor = U[i].q_acumulado; 
 id_melhor = i; 
 } 
 } 
 
 printf("\n Maior Garcon ate o momento: %s", U[id_maior].nome); 
 printf("\n Melhor Garcon ate o momento: %s", U[id_melhor].nome); 
 
 rewind(entrada2); 
 printf("\n\n"); 
 for(i=0; i<Ng; i++){ 
 fprintf(entrada2, "%s \t%d \t%f\n", U[i].nome, U[i].q_item, U[i].q_acumulado); 
 } 
 fclose(entrada2); 
 return 0; 
}

Outros materiais