Mudanças entre as edições de "Equipe5-2015-1"
Linha 202: | Linha 202: | ||
int soma=0, cod_menor, cod_maior, div=0; | int soma=0, cod_menor, cod_maior, div=0; | ||
float maior, menor, somatorio=0, media; | float maior, menor, somatorio=0, media; | ||
+ | char *nomemenor, *nomemaior; | ||
produtos *p; | produtos *p; | ||
p = lista->prox; | p = lista->prox; | ||
Linha 207: | Linha 208: | ||
printf("\nEstatísticas dos Produto:\n"); | printf("\nEstatísticas dos Produto:\n"); | ||
maior = p->preco; | maior = p->preco; | ||
− | menor = p->preco; | + | cod_maior = p->codigo; |
− | + | nomemaior = p->descricao; | |
+ | menor = p->preco; | ||
+ | cod_menor = p->codigo; | ||
+ | nomemenor = p->descricao; | ||
+ | |||
for(p = lista; p != NULL; p = p->prox) { | for(p = lista; p != NULL; p = p->prox) { | ||
soma = soma + p->qtdade; | soma = soma + p->qtdade; | ||
Linha 216: | Linha 221: | ||
maior = p->preco; | maior = p->preco; | ||
cod_maior = p->codigo; | cod_maior = p->codigo; | ||
+ | nomemaior = p->descricao; | ||
} | } | ||
if(menor > p->preco) { | if(menor > p->preco) { | ||
menor = p->preco; | menor = p->preco; | ||
cod_menor = p->codigo; | cod_menor = p->codigo; | ||
+ | nomemenor = p->descricao; | ||
} | } | ||
} | } | ||
media = somatorio/div; | media = somatorio/div; | ||
− | + | ||
− | + | printf("\nMenor valor: %0.2f produto: %s", menor, nomemenor); | |
− | + | printf("\nMaior valor: %0.2f produto: %s", maior, nomemaior); | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
printf( "\nMedia de preço dos produtos: %0.2f", media); | printf( "\nMedia de preço dos produtos: %0.2f", media); | ||
printf( "\nTotal de produtos: %d\n", soma); | printf( "\nTotal de produtos: %d\n", soma); |
Edição das 15h11min de 25 de junho de 2015
Integrantes
LEONARDO TASCA
LUISA MACHADO
NATALIA ADRIANA MIRANDA
Descrição da atividade principal
Implemente um programa em linguagem C que faça o controle de estoque simplificado de produtos de uma loja de informática. O programa deverá ter necessariamente um menu onde se poderá fazer a escolha pelas opções disponíveis em loop contínuo, mas com opção de saída. Deverá ler de um arquivo de dados informações sobre os produtos de informática (cadastrados), poderá acrescentar novos produtos, eliminar produtos, e buscar um produto específico pelo código. Deverá ainda ter as opções de ordenar e imprimir a lista na tela de todos os produtos. Também deverá gravar as alterações no mesmo arquivo de dados lido. Pra terminar, contar com uma opção de estatística dizendo qual a quantidade de produtos, o maior, menor e valor médio dos produtos de informática cadastrados.
Descrição da atividade específica
- Fazer uso
- Comando swith
- Lista encadeada
- Ponteiros
- Alocação Dinâmica de Memória
- Funções para tratamento de arquivo
- Exemplo da estrutura (encadeada)
struct TProduto{ int codigo; char descricao[40]; float preco; int qtdade; struct TProduto *prox; };
- Exemplo de arquivo (produtos.dat)
cat produtos.dat 111 PENDRIVE 19.50 20 102 DVD-RW 2.30 200 150 MOUSE 17.85 50 115 HP3212 80.50 10
Atividades
Distribuição
TODAS AS FUNÇÕES FORAM FEITAS EM CONJUNTO.
Código fonte
#include <stdio.h>
#include <stdlib.h>
typedef struct TProduto produtos;
struct TProduto{
int codigo;
int qtdade;
char descricao[20];
float preco;
struct TProduto *prox;
}*lista;
int i=1;
void ler_arquivo_para_lista()
{
FILE *fp;
int res;
if ((fp = fopen("produtos.dat", "r")) == NULL) {
printf("Falha na abertura do arquivo.\n");
return;
}
while(1) {
produtos *novo = malloc(sizeof(produtos));
if((res = fscanf(fp,"%d %d %s %f", &novo->codigo, &novo->qtdade, novo->descricao, &novo->preco)) == EOF) {
break;
}
if(lista == NULL) {
lista = novo;
}else {
novo->prox = lista->prox;
lista->prox = novo;
}
}
fclose(fp);
}
void atualizar()
{
FILE *fp;
int res;
produtos *p;
if ((fp = fopen("produtos.dat", "w")) == NULL) {
printf("Falha na abertura do arquivo.\n");
return;
}
for (p = lista; p != NULL; p = p->prox) {
if((res = fprintf(fp,"%d %d %s %0.2f\n", p->codigo, p->qtdade, p->descricao, p->preco)) == EOF) {
printf("Erro\n");
}
}
printf("\nArquivo atualizado\n");
fclose(fp);
}
void listar_produtos()
{
system("clear");
produtos *p;
printf("\nLista dos Produtos Cadastrados:\n");
printf("\n-------------------------------------------------------------------------------\n");
for (p = lista; p != NULL; p = p->prox) {
printf( "%d %d %s %0.2f", p->codigo, p->qtdade, p->descricao, p->preco);
printf("\n-------------------------------------------------------------------------------\n");
}
}
void add_prod()
{
system("clear");
printf("\nAdicionar produto:\n");
produtos *p = malloc (sizeof(produtos));
printf("\nDigite o código do produto: ");
scanf("%d", &p->codigo);
printf("Digite a quantidade de produtos: ");
scanf("%d", &p->qtdade);
printf("Digite o nome do produto: ");
scanf("%s", p->descricao);
printf("Digite preço do produto: ");
scanf("%f", &p->preco);
if(lista == NULL) {
lista = p;
}else {
p->prox = lista->prox;
lista->prox = p;
}
}
void rm_prod()
{
system("clear");
int cod;
produtos *pa = malloc (sizeof(produtos));
produtos *p;
pa=lista;
printf("\n-------------------------------------------------------------------------------\n");
printf("\nRemover Produto\n");
printf("\nDigite o código: ");
scanf("%d", &cod);
for(p = lista; p != NULL; p = p->prox) {
if(p->codigo == cod)
break;
pa = p;
}
if(p != NULL) {
free(p);
pa->prox = p->prox;
printf("\nProduto removido!!\n");
printf("\n-------------------------------------------------------------------------------\n");
}else {
printf("\nCódigo não existente!!\n");
printf("\n-------------------------------------------------------------------------------\n");
}
}
void localizar()
{
system("clear");
int cod;
produtos *p;
p = lista->prox;
printf("\nLocalizar Produto\n");
printf("\nDigite o código: ");
scanf("%d", &cod);
for(p = lista; p != NULL; p = p->prox) {
if(p->codigo == cod)
break;
}
if(p!=NULL) {
printf("\n-------------------------------------------------------------------------------\n");
printf( "\n%d %d %s %0.2f\n", p->codigo, p->qtdade, p->descricao, p->preco);
printf("\n-------------------------------------------------------------------------------\n");
}else {
printf("\n-------------------------------------------------------------------------------\n");
printf("\nProduto não encontrado!!\n");
printf("\n-------------------------------------------------------------------------------\n");
}
}
void estat()
{
system("clear");
int soma=0, cod_menor, cod_maior, div=0;
float maior, menor, somatorio=0, media;
char *nomemenor, *nomemaior;
produtos *p;
p = lista->prox;
printf("\n-------------------------------------------------------------------------------\n");
printf("\nEstatísticas dos Produto:\n");
maior = p->preco;
cod_maior = p->codigo;
nomemaior = p->descricao;
menor = p->preco;
cod_menor = p->codigo;
nomemenor = p->descricao;
for(p = lista; p != NULL; p = p->prox) {
soma = soma + p->qtdade;
somatorio = somatorio + p->preco;
div = div + 1;
if(maior < p->preco) {
maior = p->preco;
cod_maior = p->codigo;
nomemaior = p->descricao;
}
if(menor > p->preco) {
menor = p->preco;
cod_menor = p->codigo;
nomemenor = p->descricao;
}
}
media = somatorio/div;
printf("\nMenor valor: %0.2f produto: %s", menor, nomemenor);
printf("\nMaior valor: %0.2f produto: %s", maior, nomemaior);
printf( "\nMedia de preço dos produtos: %0.2f", media);
printf( "\nTotal de produtos: %d\n", soma);
printf("\n-------------------------------------------------------------------------------\n");
}
void mostra_opcoes()
{
system("clear");
printf("\n-------------------------------------------------------------------------------\n");
printf("Menu\n");
printf("\nOpção 1: Listar produtos cadastrados\n");
printf("Opção 2: Adicionar produtos\n");
printf("Opção 3: Remover produto\n");
printf("Opção 4: Localizar produto\n");
printf("Opção 5: Estatísticas\n");
printf("Opção 6: Sair\n");
printf("\n-------------------------------------------------------------------------------\n");
}
void opcoes(int x)
{
int k;
while(i) {
switch(x) {
case 1: // função listar
printf("\nTempo de visualização (segundos): ");
scanf("%d", &k);
listar_produtos();
sleep(k);
funcao_principal();
break;
case 2: // função adicionar
add_prod();
funcao_principal();
break;
case 3: // função remover
rm_prod();
sleep(3);
funcao_principal();
break;
case 4: // função buscar
localizar();
sleep(5);
funcao_principal();
break;
case 5: // função estatística
printf("\nTempo de visualização (segundos): ");
scanf("%d", &k);
estat();
sleep(k);
funcao_principal();
break;
case 6:
printf("Saindo!!\n");
i=0;
default:
x=6;
}
}
}
funcao_principal()
{
int num;
mostra_opcoes();
printf("Entre com um número: ");
scanf("%d", &num);
opcoes(num);
}
void main()
{
lista = NULL;
ler_arquivo_para_lista();
funcao_principal();
atualizar();
}
<< | Equipe5-2015-1 |
---|