Está en la página 1de 13

PRODUCTO ACADEMICO 3

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.

1. Inclusión de bibliotecas `<iostream>`:

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.

2. Declaración de espacio de nombres: `using namespace std;`:

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`.

`std::cout`. : se elimina los std:: y solo queda cout, como en la imagen

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).

4. Función para calcular descuentos `double calcularDescuento(int cantidad, int tipo_libro)`:

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:

• Se muestra un menú de opciones al usuario utilizando la función `cout` para mostrar


mensajes en la consola y la función `cin` para leer la opción seleccionada por el usuario.

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.

Caso 1: Registro de venta:

• 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`.

Caso 2: Reporte de 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:

• Se muestra un mensaje indicando que el programa está saliendo.

Bucle `do-while`:

• El bucle se repite mientras la opción seleccionada sea diferente de 3 (salir). Y se muestra en


la siguiente parte:

5|P ági na
Este bucle se encuentra en el caso 1 y 2.

Retorno de la función `main`:

• Al finalizar el programa, se retorna 0 para indicar que el programa finalizó correctamente.

LAS PRINCIPALES BIBLIOTECAS SON:

• `<iostream>`: operaciones de entrada y salida


• `do-while`: bucle
• `switch`: estructura de control que gestiona las opciones seleccionadas por el usuario y
generar un informe de ventas.

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++

Después de completar el código en el programa C++, pasamos a probar si funciona correctamente,


para lo cual realizamos

COMPILE Y RUN (F11)

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:

Al ingresar la opción 1, REGISTRAR VENTA

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:

Tipo de Libros Precio (S/.)


1-Ficción 90
2-Novelas 100
3-Cuentos 80
4-Física Cuántica 150
• Cantidad de libros. (debe ser mayor a cero).

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

• Importe Bruto = cantidad x precio.


• Monto de Descuento = Importe Bruto x porcentaje de Descuento

Se aplica un porcentaje de descuento en función a la cantidad de libros y Tipo de libros

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%

• Importe Neto = Importe Bruto – Monto de Descuento

En esta opción se debe mostrar el resultado siguiente:

• Cantidad de venta registradas de libros de Física Cuántica


• Cantidad de ventas registradas de libros de Ficción que tengan un descuento de 6%.
• Cantidad de ventas registradas de clientes varones cuyo Descuento Neto sea >=200 y
<=2500
• Monto total de Importe Neto
• Monto total de Importe Neto de los clientes mujeres que compraron libros de
Novelas
• Promedio de Importe Neto de clientes varones que compraron libros de Cuentos

RESULTADO USANDO CONTADORES

RESULTADO USANDO ACUMULADORES

USO DE MODULOS:
MODULO DE PROCESO Y MODULO DE MENÚ DE OPCIONES

Captura de pantalla de opción de menú

9|P ági na
CODIGO DEL PRODUCTO ACADEMICO 3

#include <iostream>
using namespace std;

// Estructura para almacenar los datos de una venta


struct Venta {
char genero;
int tipo_libro;
int cantidad;
double precio;
double importe_bruto;
double monto_descuento;
double importe_neto;
};

// Función para calcular el descuento según la cantidad de libros y el tipo


double calcularDescuento(int cantidad, int tipo_libro) {
if (cantidad >= 1 && cantidad <= 2) {
switch (tipo_libro) {
case 1: return 0.05;
case 2: return 0.08;
case 3: return 0.09;
case 4: return 0.02;
}
} else if (cantidad >= 3 && cantidad <= 6) {
switch (tipo_libro) {
case 1: return 0.06;
case 2: return 0.16;
case 3: return 0.18;
case 4: return 0.02;
}
} else if (cantidad > 7) {
switch (tipo_libro) {
case 1: return 0.08;
case 2: return 0.32;
case 3: return 0.36;
case 4: return 0.04;
}
}

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);

// Asignar precio según el tipo de libro


switch (venta.tipo_libro) {
case 1: venta.precio = 90; break;
case 2: venta.precio = 100; break;
case 3: venta.precio = 80; break;
case 4: venta.precio = 150; break;
}

// Validación de cantidad de libros


do {
cout << "Ingrese la cantidad de libros (mayor a cero): ";
cin >> venta.cantidad;
} while (venta.cantidad <= 0);

// Cálculo de importe bruto


venta.importe_bruto = venta.cantidad * venta.precio;

// Cálculo de descuento
double descuento = calcularDescuento(venta.cantidad, venta.tipo_libro);
venta.monto_descuento = venta.importe_bruto * descuento;

// Cálculo de importe neto


venta.importe_neto = venta.importe_bruto - venta.monto_descuento;

// Agregar venta al arreglo


ventas[num_ventas] = venta;
num_ventas++;

cout << "Venta registrada exitosamente." << endl;


} else {
cout << "Se ha alcanzado el límite máximo de ventas." << endl;
}

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;

for (int i = 0; i < num_ventas; i++) {


Venta venta = ventas[i];

// Cantidad de ventas de libros de Física Cuántica


if (venta.tipo_libro == 4) {
cant_cuanticos += venta.cantidad;
}

// Cantidad de ventas de libros de Ficción con descuento del 6%


if (venta.tipo_libro == 1 && venta.monto_descuento > 0.0) {
cant_ficcion_descuento6 += venta.cantidad;
}

// 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


monto_total_neto += venta.importe_neto;

// 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;
}

// Promedio de Importe Neto de clientes varones que compraron libros de Cuentos


if (venta.genero == 'M' && venta.tipo_libro == 3) {
promedio_neto_varones_cuentos += venta.importe_neto;
cant_varones_cuentos++;
}
}

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 << "Saliendo del programa..." << endl;


break;

cout << "Opción inválida. Por favor, ingrese una opción válida." << endl;
break;
}
} while (opcion != 3);

return 0;
}

EVIDENCIAS DEL TRABAJO GRUPAL:

12 | P á g i n a
13 | P á g i n a

También podría gustarte