Olá!! Estou com dificuldade em terminar uma atividade em linguagem c, onde se pede:
Em um sistema de comércio eletrônico os dados são armazenados em 2 vetores e 1 matriz:
float clientes[10] = {1,25,13,...} // ler códigos de clientes até o usuário informar o valor -1;
float produtos[10] = {10,2,5,3,...} // ler códigos de produtos até o usuário informar o valor -1;
float vendas[30][4] = {{1,10,3.5,11},{1,2,9,7},{25,3,4,4},...}ler a quádrupla (código do cliente, código do produto, quantidade, preço unitário} até o usuário informar o valor -1 para o código do cliente;
Faça um programa em C que:
leia os vetores e a matriz que serão informadas pelo usuário - os vetores e a matriz poderão ser declarados como variáveis globais;
contenha funções/procedimentos para:
a) calcular o valor total gasto por um cliente cujo o código será passado como parâmetro;
b) calcular o valor médio gasto pelos clientes;
c) calcular e mostrar na tela o valor já vendido de cada produto;
d) encontrar o produto que apresentou o maior faturamento (produto mais vendido considerando o valor total vendido deste produto).
O programa já esta quase todo pronto, porém estou com dificuldade na ultima função que pede o produto com maior faturamento, sendo que no meu programa o resultado é sempre o ultimo produto declarado na matriz (mesmo ele nao sendo o produto de maior faturamento).
codigo:
#include <stdio.h>
//função ler vetor dos clientes
int ler_clientes(float clientes[10]){
int a, i, pos;
float num;
printf("Informe os valores , 1 em cada linha. Informe -1 para finalizar.\n");
scanf("%f\n", &num);
for(pos=0; num!=-1 && pos<10; pos++){
clientes[pos]=num;
scanf("%f", &num);
}
return pos;
}
//função ler vetor dos produtos
int ler_produtos(float produtos[10]){
int b, i, pos;
float num;
printf("Informe os valores , 1 em cada linha. Informe -1 para finalizar.\n");
scanf("%f\n", &num);
for(pos=0; num!=-1 && pos<10; pos++){
produtos[pos]=num;
scanf("%f", &num);
}
return pos;
}
//função ler matriz de vendas
int ler_vendas(float vendas[30][4]){
int c, i, j, pos;
float num;
printf("Informe os valores , 1 em cada linha. Informe -1 para finalizar.\n");
scanf("%f\n", &num);
for(pos=0; num!=-1 && pos<10; pos++){
for(j=0; j<4; j++){
vendas[pos][j]=num;
scanf("%f", &num);
}
}
return pos;
}
//função que retorna o gasto do cliente
float gasto_clientes(float vendas[30][4], float cod1, int p3){
int i, j;
float valor=0, soma=0;
for(i=0; i<p3; i++){ //percorre linhas da matriz vendas
if(cod1==vendas[i][0]){
valor=vendas[i][2]*vendas[i][3];
soma=soma+valor;
}
}
return soma;
}
//função que retorna o gasto medio dos clientes
float gasto_medio(float vendas[30][4], int p1, int p3){
int a, i;
float valor=0, soma=0, media=0;
for(i=0; i<p3; i++){
valor=vendas[i][2]*vendas[i][3];
soma=soma+valor;
}
for(a=0; a<p1; a++){ //percorre vetor de clientes
for(i=0; i<p3; i++){ //percorre linhas da matriz vendas
media=soma/p1;
}
}
return media;
}
//função que retorna o valor ja vendido de cada produto
void venda_produto(float produtos[10], float vendas[30][4], int p2, int p3){
int b, i;
float valor=0, soma=0;
for(b=0; b<p2; b++){ //percorre vetor produtos
valor=0;
soma=0;
for(i=0; i<p3; i++){ //percorre linhas da matriz vendas
if(produtos[b]==vendas[i][1]){
valor=vendas[i][2]*vendas[i][3];
soma=soma+valor;
}
}
printf("valor ja vendido do produto %f = %f\n", produtos[b], soma);
}
}
//função que retorna o produto mais vendido
float mais_vendido(float produtos[10], float vendas[30][4], int p2, int p3){
int b, i;
float mais_vendido=0, valor=0, soma=0;
for(b=0; b<p2; b++){ //percorre vetor produtos
valor=0;
soma=0;
for(i=0; i<p3; i++){ //percorre matriz vendas
if(produtos[b]==vendas[i][1]){
valor=vendas[i][2]*vendas[i][3];
soma=soma+valor;
}
}
if(soma>mais_vendido){
mais_vendido=produtos[b];
}
}
return mais_vendido;
}
int main() {
float clientes[10], produtos[10], vendas[30][4];
float cod;
int pos1, pos2, pos3;
//lendo vetor dos clientes
pos1=ler_clientes(clientes);
//lendo vetor dos produtos
pos2=ler_produtos(produtos);
//lendo matriz de vendas
pos3=ler_vendas(vendas);
//calcular o valor total gasto por um cliente cujo o código será passado como parâmetro
printf("informe o codigo do cliente\n");
scanf("%f", &cod);
printf("Valor gasto pelo cliente %f: %f\n", cod, gasto_clientes(vendas, cod, pos3));
//calcular valor medio gasto dos clientes
printf("Valor medio gasto pelos clientes: %f\n", gasto_medio(vendas, pos1, pos3));
//valor ja vendido de cada produto
venda_produto(produtos, vendas, pos2, pos3);
//produto mais vendido
printf("Produto mais vendido: %f\n", mais_vendido(produtos, vendas, pos2, pos3));
return 0;
}