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 clase Ventas, almacena el valor de cada transacción.
  • Método calcular_promv: Función de la clase Vendedor para determinar el promedio de todas las ventas.
  • Método Contar_montomp: Función de la clase Vendedor para contar las ventas superiores al promedio.
  • Atributo aventas: Arreglo de objetos Ventas dentro de la clase Vendedor.

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 objetos Ventas.
    • 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

Entradas relacionadas: