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