C/Visual C - problemas con un codigo

 
Vista:
sin imagen de perfil
Val: 7
Ha aumentado su posición en 2 puestos en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

problemas con un codigo

Publicado por Martin (2 intervenciones) el 22/06/2020 20:45:01
me dieron este ejercicio y lo resolvi de esta manera pero me dijieron que podía hacer una sola validación para todo y pasarle argumentos..alguien me podría ayudar?..
-Se desea estudiar las ventas realizadas durante el día por una empresa donde trabajan 10 vendedores y se comercializan 40 artículos. Para tal fin, al finalizar el horario laboral, se nos suministran diversas planillas donde figura por cada venta de un determinado artículo: el número de vendedor que realizó la venta, el número de artículo y el importe de dicha venta.
. Número de vendedor (de 1 a 10) . Número de artículo (de 1 a 40) . Importe (float) Dichos datos, se ingresarán por teclado en forma desordenada, hasta la lectura de un número de vendedor 0 (cero). Se puede repetir durante el día, la venta de un artículo para un mismo vendedor, y no hay necesariamente venta de todos los artículos. Desarrollar el diagrama de lógica y su correspondiente codificación en lenguaje C que permita:

a) Validar el ingreso del número de vendedor y artículo, no permitiendo un valor fuera del rango permitido. La validación se debe realizar a través de una única función con parámetros, que se llamará en forma separada, ya sea para validar el artículo en una oportunidad o el vendedor.

b) Imprimir el siguiente listado: RECAUDACIONES TOTALES POR VENDEDOR Vendedor Articulo-1 Articulo-2.........................Articulo-49 Articulo-40 Total 1 xxxx.xx xxxx.xx xxxx.xx xxxx.xx xxxxx.xx 2 xxxx.xx xxxx.xx xxxx.xx xxxx.xx xxxxx.xx - - 10 xxxx.xx xxxx.xx xxxx.xx xxxx.xx xxxxx.xx Donde se visualice, el número de vendedor, los importes de venta por cada artículo y el total por vendedor, (considerando la suma de todos los artículos)

c) Informar el número de artículo, que en total entre todos los vendedores tuvo mayor recaudación (El mayor es único) d) Informar en forma ordenada de menor a mayor los montos recaudados por artículo del Vendedor 9. Para el ordenamiento, utilizar una función con parámetros. Los números de artículos e importes se deben mostrar en el programa principal -



#include <stdio.h>
int Validar_el_rango (int, int, int);
int Ingreso_por_articulo (int, int ,int);
int Ingreso_de_vendedor (int, int, int);

void cargar_datos(float[][40],float[],int[],int);
void mostrar_tabla(float [][40],int [],int ,int );
void Importe_de_articulo (float [][40], int, int);
void Ordenar(float[],int [],int);
int maximo_articulo (float [][40]);

int main(){
int mayor,i;

float matriz_importe[10][40]={{0}};
int vector_Vendedor[10]={0},nro_articulo[40];
float vector_Ordenado[40]={0},imp_vendedor_9[40]={0};

int vendedor,articulo,importe;

vendedor=Ingreso_de_vendedor(1,10,0);
if (vendedor!=0){
articulo=Ingreso_por_articulo(1,40,vendedor);
}while(vendedor!=0){

vector_Vendedor[vendedor-1]=vendedor;
Importe_de_articulo (matriz_importe,vendedor,articulo);

vendedor=Ingreso_de_vendedor(1,10,0);
if (vendedor!=0)
articulo=Ingreso_por_articulo(1,40,vendedor);

}

mostrar_tabla(matriz_importe,vector_Vendedor,10,40 );

mayor=maximo_articulo(matriz_importe);
printf("\n\nEl articulo con mayor recaudacion fue: Art.%d",mayor);

cargar_datos(matriz_importe,imp_vendedor_9,nro_articulo,40);
Ordenar(imp_vendedor_9,nro_articulo,40);
printf("\nIMPORTE DE VENDEDOR NRO 9");
printf("\nARTICULO \tIMPORTE\n");
for(i=0;i<40;i++)
{
printf("\n%d\t %.2f\n====================",nro_articulo[i],imp_vendedor_9[i]);
}

return 0;
}

int Valida_el_rango (int li, int ls, int dato){
if (dato >= li && dato <= ls){
return 1;
}
else{
return 0;
}
}

int Ingreso_de_vendedor (int li, int ls, int corte){
int vendedor;
do{
printf("\nIngrese numero de vendedor de 1 al 10 (0 para terminar): ");
scanf("%d",&vendedor);
}while(!Valida_el_rango(0,10,vendedor) && (vendedor!=corte));
return vendedor;
}

int Ingreso_por_articulo (int li, int ls, int vendedor){
int articulo;
do{
printf("\nIngrese numero de articulo de 1 al 40 para el vendedor %d: ",vendedor);
scanf("%d",&articulo);
}while(!Valida_el_rango(li,ls,articulo));
return articulo;
}

void Importe_de_articulo (float matriz_importe[][40],int vendedor, int articulo){
float importe;
printf("\nIngrese el importe: ");
scanf("%f",&importe);
if (importe>0){
matriz_importe[vendedor-1][articulo-1]+=importe;
}
}

void mostrar_tabla(float matriz_importe[][40],int vector_Vendedor[10],int filas,int columnas){
system("cls");
int i,j;
float vector_Total[10];
printf("\n\t\t\t\t\t**RECAUDACIONES TOTALES POR VENDEDOR**\n");
printf("\n\t\t\t\t\t\t\t ARTICULOS");
printf ("\nVendedor 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 ");
for(i=0;i<filas;i++){
printf ("\n\n%4d ",vector_Vendedor[i]);
for(j=0;j<columnas;j++){
printf("%5.0f",matriz_importe[i][j]);
vector_Total[i]+=matriz_importe[i][j];
}
printf("%5.0f",vector_Total[i]);
}
printf("\n\n");
system("pause");
system("cls");
}

int maximo_articulo (float matriz_importe[][40]){
int i,j,mayor;
float max=0,acumulador=0;

for(i=0;i<40;i++){
for(j=0;j<10;j++){
acumulador+=matriz_importe[j][i];
}
if(acumulador>max){
max=acumulador;
acumulador=0;
mayor=i+1;
}

}
return mayor;
}
////////////////////////////////////////////////////
void cargar_datos(float matriz_importe[][40],float imp_v9[],int nro_art[],int N)
{
int i,j;
for(i=0;i<N;i++)
{
nro_art[i]=i+1;
}

for(j=0;j<N;j++)
{
imp_v9[j]=matriz_importe[8][j];
}
}

void Ordenar(float imp_v9[],int nro_art[],int N)
{
int k,cota,i,auxI;
float auxf;
cota=N;
k=1;
while(k!=0)
{
k=0;
for(i=1;i<N;i++)
{
if(imp_v9[i-1]> imp_v9[i])
{
auxf=imp_v9[i-1];
imp_v9[i-1]=imp_v9[i];
imp_v9[i]=auxf;
auxI=nro_art[i-1];
nro_art[i-1]=nro_art[i];
nro_art[i]=auxI;
k=i;
}
}
cota=k;
}
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder