Optimización de Datos de Ventas: Promedio y Monto Máximo con POO
Clasificado en Informática
Escrito el en español con un tamaño de 7,06 KB
Este documento presenta la resolución del Ejercicio Nro. 4, que aborda el cálculo de métricas clave para un vendedor. El objetivo es determinar el promedio de ventas, el monto de venta más alto y la cantidad de ventas que superan el promedio, a partir de un registro de 40 transacciones mensuales.
Análisis del Problema
Para abordar este problema, se identifican las siguientes entidades y sus interacciones:
Clasificación de Elementos
- Clase
Ventas
: Representa una venta individual (clase menor). - Clase
Vendedor
: Representa al vendedor y gestiona el conjunto de ventas (clase mayor). - Atributo
monto
: Propiedad de la claseVentas
, almacena el valor de cada transacción. - Método
calcular_promv
: Función de la claseVendedor
para determinar el promedio de todas las ventas. - Método
Contar_montomp
: Función de la claseVendedor
para contar las ventas superiores al promedio. - Atributo
aventas
: Arreglo de objetosVentas
dentro de la claseVendedor
.
Flujo de Procesamiento y Variables Clave
- Inicialización: Se inicializan contadores y acumuladores (
I
,acumv
,contmontomp
,mayor_monto
). - Lectura de Ventas: Se leen los montos de cada venta (
m
) de forma iterativa. - Acumulación: Los montos se suman para calcular el total (
acumv = acumv + monto
). - Cálculo del Promedio: El promedio se obtiene dividiendo el total acumulado por el número de ventas (
promv = acumv / 40
). - Identificación del Monto Mayor: Se compara cada venta con el monto máximo actual para encontrar el valor más alto.
- Conteo de Ventas Superiores al Promedio: Se itera sobre las ventas para contar cuántas superan el promedio calculado.
Diseño de Clases y Métodos
El diseño se estructura en dos clases principales, Ventas
y Vendedor
, con sus respectivos atributos y métodos:
Clase Ventas
- Atributos:
Real monto
: Almacena el valor monetario de la venta.
- Métodos:
Asignar_monto(real m)
: Establece el monto de la venta.Real sacar_monto()
: Retorna el monto de la venta.
Clase Vendedor
- Constantes:
const entero max = 40
: Define el número máximo de ventas.
- Atributos:
entero I
: Contador para el arreglo de ventas.Ventas aventas[max]
: Arreglo para almacenar los objetosVentas
.entero contar_montomp
: Contador de ventas con monto mayor al promedio.Real mayor_monto
: Almacena el monto de venta más alto.
- Métodos:
Inicializar()
: Constructor o método de inicialización.Agregar_aventas(ventas ven)
: Añade una venta al arreglo.Ventas mostrar_aventas(entero cont)
: Retorna una venta específica del arreglo.Real calcular_promv()
: Calcula y retorna el promedio de ventas.entero sacar_contmontomp()
: Retorna el conteo de ventas mayores al promedio.Contar_montomp()
: Procesa y actualiza el conteo de ventas mayores al promedio.Real sacar_mayor_monto()
: Retorna el monto de venta más alto.Mayor_monto()
: Procesa y actualiza el monto de venta más alto.
Implementación del Código
Clase Ventas
Clase Ventas
Inicio
Privado
Real monto
Público
Asignar_monto(real m)
Real sacar_monto()
Fin
Clase Vendedor
Const entero max = 40;
Clase Vendedor
Inicio
Privado
Entero I
Ventas aventas[max]
Entero contar_montomp
Real mayor_monto
Público
Inicializar()
Agregar_aventas(ventas ven)
Ventas mostrar_aventas(entero cont)
Real calcular_promv()
Entero sacar_contmontomp()
Contar_montomp()
Real sacar_mayor_monto()
Mayor_monto()
Fin
Métodos de la Clase Vendedor
Método Inicializar()
Vendedor Inicializar()
Inicio
I = 0;
contmontomp = 0;
mayor_monto = 0.0;
Fin
Método Agregar_aventas(ventas ven)
Vendedor Agregar_aventas(ventas ven)
Inicio
aventas[I] = ven;
I = I + 1;
Fin
Método mostrar_aventas(entero cont)
Ventas Vendedor mostrar_aventas(entero cont)
Inicio
Retornar aventas[cont];
Fin
Método calcular_promv()
Real Vendedor calcular_promv()
Inicio
Real promv;
Real acumv = 0.0;
Repetir para (entero cont = 0; cont < max; cont = cont + 1)
acumv = acumv + aventas[cont].sacar_monto();
promv = acumv / max;
Retornar promv;
Fin
Método sacar_contmontomp()
Entero Vendedor sacar_contmontomp()
Inicio
Retornar contmontomp;
Fin
Método Contar_montomp()
Vendedor Contar_montomp()
Inicio
Real promedio_actual = calcular_promv();
Repetir para (entero cont = 0; cont < max; cont = cont + 1)
Si (aventas[cont].sacar_monto() > promedio_actual)
contmontomp = contmontomp + 1;
Fin
Método sacar_mayor_monto()
Real Vendedor sacar_mayor_monto()
Inicio
Retornar mayor_monto;
Fin
Método Mayor_monto()
Vendedor Mayor_monto()
Inicio
Si (max > 0)
mayor_monto = aventas[0].sacar_monto();
Repetir para (entero cont = 1; cont < max; cont = cont + 1)
Si (mayor_monto < aventas[cont].sacar_monto())
mayor_monto = aventas[cont].sacar_monto();
Fin
Cuerpo Principal del Programa
Principal()
Inicio
Ventas ven;
Vendedor VE;
Real m;
VE.Inicializar();
Repetir para (entero cont = 0; cont < max; cont = cont + 1)
Inicio
Escribir "Ingrese el monto de la venta ", cont + 1, ": ";
Leer m;
ven.Asignar_monto(m);
VE.Agregar_aventas(ven);
Fin
VE.Contar_montomp();
VE.Mayor_monto();
Escribir "El promedio de ventas es: ", VE.calcular_promv();
Escribir "La cantidad de ventas con monto mayor al promedio es: ", VE.sacar_contmontomp();
Escribir "El monto mayor vendido es: ", VE.sacar_mayor_monto();
Fin