Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Puclla Sanchez, Stanlin
Puclla Sanchez, Stanlin
DOCENTE:
DARIO FRANCISCO DUEÑAS BUSTINZA
ASIGNATURA
FUNDAMENTOS DE PROGRAMACIÓN
NRC: 29051
INTEGRANTES DEL GRUPO:
1. STANLIN PUCLLA SANCHEZ
2. ROSA MERCEDES HUARICALLO MARCA
3. CRHISTIAN CCAHUANA OJEDA
EL PRODUCTO ACADEMICO 3, nos pide realizar un código en C++ que permita gestionar ventas de
libros y generar un reporte de ventas. A continuación, se detalla cómo se ha implementado el código
y qué bibliotecas se están utilizando.
Esta biblioteca estándar de C++ se utiliza para realizar operaciones de entrada y salida, como mostrar
mensajes en la consola y leer la entrada del usuario.
Esta línea permite acceder a los elementos del espacio de nombres `std` sin la necesidad de usar el
prefijo `std::`. Por ejemplo, se puede utilizar `cout` en lugar de `std::cout`.
3. Estructura de datos:
Se ha creado una estructura llamada `Venta` que sirve para guardar la información relevante de una
venta de libros. Esta estructura incluye varios campos como el género del cliente, el tipo de libro, la
cantidad de libros vendidos, el precio unitario, el importe bruto (el costo total antes de aplicar
descuentos), el monto de descuento aplicado y el importe neto (el costo total después de aplicar
descuentos).
Esta función toma la cantidad de libros y el tipo de libro como argumentos y devuelve el descuento
correspondiente según la lógica definida en la función.
2|P ági na
5. Función principal `main`:
Variables:
• `const int MAX_VENTAS = 100`: Se define una constante `MAX_VENTAS` para especificar el
tamaño máximo del arreglo de ventas.
• `Venta ventas [MAX_VENTAS]`: Se declara un arreglo de ventas llamado `ventas` con tamaño
`MAX_VENTAS` para almacenar las ventas registradas.
• `int num_ventas = 0`: Se inicializa la variable `num_ventas` para llevar el registro del número
de ventas registradas.
• `int opcion`: Se declara la variable `opcion` para almacenar la opción seleccionada por el
usuario en el menú.
Bucle principal
• `do-while`: El programa se ejecuta en un bucle `do-while` que se repite hasta que la opción
seleccionada sea 3 (salir).
Menú de opciones:
3|P ági na
Estructura de control `switch`:
• Se utiliza una estructura de control `switch` para ejecutar diferentes casos según la opción
seleccionada por el usuario.
• Se solicita al usuario que ingrese los datos de la venta, como el género del cliente, el tipo de
libro y la cantidad de libros.
• Se realizan validaciones de entrada para asegurar que los datos ingresados sean válidos.
• Se calcula el importe bruto, el descuento y el importe neto de la venta.
• La venta se agrega al arreglo `ventas` y se incrementa `num_ventas`.
• Se inicializan variables para almacenar diferentes estadísticas relacionadas con las ventas.
• Se recorre el arreglo de ventas y se realizan cálculos basados en los datos de cada venta.
• Los resultados se muestran en la consola utilizando la función `cout`.
4|P ági na
Caso 3: Salir:
Bucle `do-while`:
5|P ági na
Este bucle se encuentra en el caso 1 y 2.
El programa permite registrar ventas de libros, calcular descuentos y generar un reporte de ventas
con diferentes estadísticas
6|P ági na
INICIO DEL CODIGO CON EL PROGRAMA C++
Se observa que solo tenemos 3 opciones y si ingresamos números como 4 – 5, volverá a aparecer el
menú de opciones. Debemos ingresar los números 1 – 2 – 3, ingresar los respectivos datos y realizar
su validación respectiva.
OPCIÓN 1:
En esta opción el usuario debe ingresar los siguientes datos, además debe realizar su validación
respectiva
• Género (M-Masculino/F-Femenino).
• Tipo de Libro (1-Ficción / 2-Novelas / 3-Cuentos/4-Física Cuántica). Según el tipo
seleccionado el precio es el siguiente:
7|P ági na
Realizaremos la validación de datos 4 veces:
1. Ingresamos la opción (1), ingresamos género masculino, ingresamos tipo de libro opción 1
(fricción), ingresamos la cantidad de libros (6).
2. Ingresamos la opción (1), ingresamos género femenino, ingresamos tipo de libro opción 2
(novelas), ingresamos la cantidad de libros (3).
3. Ingresamos la opción (1), ingresamos género masculino, ingresamos tipo de libro opción 3
(cuentos), ingresamos la cantidad de libros (2).
4. Ingresamos la opción 1, ingresamos género femenino (F), ingresamos tipo de libro opción 4
(física cuántica), ingresamos la cantidad de libros (7).
OPCIÓN 2:
Luego de pedir la cantidad de libros, mostrar: Importe Bruto, Monto de descuento e Importe Neto
8|P ági na
Cantidad 1-Ficción 2-Novelas 3-Cuentos 4-Física
de libros (% de (% de (% de Cuántica
descuento) descuento) descuento) (% de
descuento)
1-2 5% 8% 9% 2%
3-6 6% 16% 18% 2%
>7 8% 32% 36% 4%
USO DE MODULOS:
MODULO DE PROCESO Y MODULO DE MENÚ DE OPCIONES
9|P ági na
CODIGO DEL PRODUCTO ACADEMICO 3
#include <iostream>
using namespace std;
return 0.0;
}
int main() {
const int MAX_VENTAS = 100;
Venta ventas[MAX_VENTAS];
int num_ventas = 0;
int opcion;
do {
cout << "MENÚ DE OPCIONES" << endl;
cout << "[1]. REGISTRAR VENTA" << endl;
cout << "[2]. REPORTAR VENTA" << endl;
cout << "[3]. SALIR" << endl;
cout << "Ingrese su opción: ";
cin >> opcion;
switch (opcion) {
case 1:
// Registro de venta
if (num_ventas < MAX_VENTAS) {
Venta venta;
// Validación de género
do {
cout << "Ingrese el género (M-Masculino / F-Femenino): ";
cin >> venta.genero;
venta.genero = toupper(venta.genero);
} while (venta.genero != 'M' && venta.genero != 'F');
10 | P á g i n a
// Validación de tipo de libro
do {
cout << "Ingrese el tipo de libro (1-Ficción / 2-Novelas / 3-Cuentos / 4-Física Cuántica): ";
cin >> venta.tipo_libro;
} while (venta.tipo_libro < 1 || venta.tipo_libro > 4);
// Cálculo de descuento
double descuento = calcularDescuento(venta.cantidad, venta.tipo_libro);
venta.monto_descuento = venta.importe_bruto * descuento;
break;
case 2:
// Reporte de ventas
int cant_cuanticos = 0;
int cant_ficcion_descuento6 = 0;
int cant_varones_descuento200_2500 = 0;
double monto_total_neto = 0.0;
double monto_total_neto_mujeres_novelas = 0.0;
double promedio_neto_varones_cuentos = 0.0;
int cant_varones_cuentos = 0;
// Cantidad de ventas de clientes varones con Descuento Neto entre 200 y 2500
if (venta.genero == 'M' && venta.importe_neto >= 200.0 && venta.importe_neto <= 2500.0) {
cant_varones_descuento200_2500 += venta.cantidad;
}
// Monto total de Importe Neto de las clientes mujeres que compraron libros de Novelas
11 | P á g i n a
if (venta.genero == 'F' && venta.tipo_libro == 2) {
monto_total_neto_mujeres_novelas += venta.importe_neto;
}
if (num_ventas > 0) {
promedio_neto_varones_cuentos /= cant_varones_cuentos;
}
// Mostrar resultados
cout << "Cantidad de ventas de libros de Física Cuántica: " << cant_cuanticos << endl;
cout << "Cantidad de ventas de libros de Ficción con descuento del 6%: " << cant_ficcion_descuento6 << endl;
cout << "Cantidad de ventas de clientes varones con Descuento Neto entre 200 y 2500: " << cant_varones_descuento200_2500 << endl;
cout << "Monto total de Importe Neto: " << monto_total_neto << endl;
cout << "Monto total de Importe Neto de las clientes mujeres que compraron libros de Novelas: " << monto_total_neto_mujeres_novelas << endl;
cout << "Promedio de Importe Neto de clientes varones que compraron libros de Cuentos: " << promedio_neto_varones_cuentos << endl;
break;
cout << "Opción inválida. Por favor, ingrese una opción válida." << endl;
break;
}
} while (opcion != 3);
return 0;
}
12 | P á g i n a
13 | P á g i n a