cpp

C++ | Ejercicio resuelto de inventario

En este post de programación en CPP/C++ vamos a resolver otro ejercicio que dice así:

Realice un programa en C++ sobre un inventario. Una tienda vende pantalones, camisas, sacos y sombreros. Crear una aplicación que permita llevar el inventario actualizado acorde con la compra.

La tienda posee el siguiente inventario:

  • 150 pantalones, con un costo de 25.
  • 100 camisas con un costo de 1.
  • 2 sacos con un costo de 1
  • 10 sombreros con un costo de 5

Su programa debe imprimir el inventario actualizado en pantalla y solicitarle al cliente qué desea comprar. Una vez el cliente seleccione, se le solicita la cantidad y se imprime en pantalla el costo total de lo que se está comprando.

Al final, se debe mostrar el inventario actualizado en pantalla y solo se sale de la aplicación si el cliente escoge la opción de salir.

Solución del ejercicio

Para este caso podríamos usar objetos y clases; cada objeto tendría el costo, cantidad y nombre. Pero como es algo de programación básica vamos a usar 3 arreglos en donde estará uno que tendrá todos los nombres, otro con todos los costos y otro con las cantidades.

Luego vamos a recorrerlos, imprimirlos y también imprimir un menú que le pregunta al usuario lo que quiere hacer. Este menú estará dentro de un ciclo while.

Si el usuario elige comprar, vamos a preguntarle el número de artículo que a la vez vamos a tomar como índice para acceder a los arreglos y extraer o modificar los valores.

Arreglos

Comenzamos declarando los arreglos:

// Declaramos tres arreglos, uno por cada columna de la tabla
// Primero los nombres
array<string, 4> articulos = {
    "Pantalones",
    "Camisas",
    "Sacos",
    "Sombreros",
};
// Luego los costos
array<double, 4> costos = {
    25, 1, 1, 5};
// Finalmente las existencias
array<int, 4> cantidades = {
    150, 100, 2, 10}

Todos están en el mismo orden y tienen la misma longitud.

Menú

Ahora es momento de imprimir todos los artículos y solicitar al usuario lo que desea hacer. Entonces el código en C++ queda así:

// Mientras que la elección del usuario no sea "2" que es para salir...
string eleccion = "";
// Hacer el ciclo
while (eleccion != "2")
{
        // Imprimir los artículos
        cout << "____________" << endl;
        for (int i = 0; i < 4; i++)
        {
            // Imprimir el número para que el usuario pueda seleccionar el artículo
            cout << "Número: " << i + 1 << endl;
            cout << "Artículo: " << articulos[i] << endl;
            cout << "Costo: " << costos[i] << endl;
            cout << "Cantidad: " << cantidades[i] << endl;
            cout << "____________" << endl;
        }
        // Imprimir el menú principal
        cout << "1. Comprar artículo\n2. Salir\nSeleccione: ";
}

En este caso el ciclo while se va a romper cuando la elección sea 2. Fíjate que en la línea 11 estamos imprimiendo el número de artículo que no es más que el índice que cada artículo tiene dentro del arreglo, pero aumentado en 1.

Comprar artículo

Si el usuario elige comprar, entonces pasa lo siguiente:

// Si elige 1, entonces solicitar número de artículo y cantidad
if (eleccion == "1")
{
    int numeroArticulo;
    cout << "Ingrese el número de artículo: ";
    cin >> numeroArticulo;
    // Necesitamos el índice del arreglo, que sería restarle 1 al número que elige el usuario pues los arreglos comienzan a contar en 0
    int indice = numeroArticulo - 1;
    // Validamos si el número de artículo está entre 0 y 3
    if (indice >= 0 && indice <= 3)
    {
        // Solicitamos cantidad
        int cantidad;
        cout << "Ingrese la cantidad que compra: ";
        cin >> cantidad;
        // Validar si la cantidad es correcta
        if (cantidad > cantidades[indice])
        {
            cout << "No hay suficiente existencia" << endl;
        }
        else
        {
            // En caso de que sí haya suficiente existencia, extraemos el costo
            double costo = costos[indice];
            // Sacamos el costo total
            double total = costo * cantidad;
            // Imprimimos
            cout << "========================================" << endl;
            cout << "Usted ha comprado " << articulos[indice] << " X " << cantidad << endl;
            cout << "Total: " << total << endl;
            cout << "GRACIAS POR SU COMPRA" << endl;
            cout << "========================================" << endl;
            // Y restamos la cantidad en el arreglo
            cantidades[indice] = cantidades[indice] - cantidad;
        }
    }
    else
    {
        // Caso contrario, imprimimos que no es un artículo válido
        cout << "Número de artículo " << numeroArticulo << " inválido" << endl;
    }
}

Validamos que el número de artículo sea correcto y que las existencias sean suficientes para la compra. Si estas validaciones pasan, entonces pasamos a la línea 23 en donde extraemos el costo, calculamos el total e imprimimos lo que se compró así como el total.

También dentro de la línea 34 estamos restando la existencia de ese artículo.

Poniendo todo junto

El código completo de este ejercicio resuelto de C++ queda así:

/*
    https://parzibyte.me/blog
*/#include <iostream>
#include <array>
using namespace std;

int main()
{
    // Declaramos tres arreglos, uno por cada columna de la tabla
    // Primero los nombres
    array<string, 4> articulos = {
        "Pantalones",
        "Camisas",
        "Sacos",
        "Sombreros",
    };
    // Luego los costos
    array<double, 4> costos = {
        25, 1, 1, 5};
    // Finalmente las existencias
    array<int, 4> cantidades = {
        150, 100, 2, 10};

    // Mientras que la elección del usuario no sea "2" que es para salir...
    string eleccion = "";
    // Hacer el ciclo
    while (eleccion != "2")
    {
        // Imprimir los artículos
        cout << "____________" << endl;
        for (int i = 0; i < 4; i++)
        {
            // Imprimir el número para que el usuario pueda seleccionar el artículo
            cout << "Número: " << i + 1 << endl;
            cout << "Artículo: " << articulos[i] << endl;
            cout << "Costo: " << costos[i] << endl;
            cout << "Cantidad: " << cantidades[i] << endl;
            cout << "____________" << endl;
        }
        // Imprimir el menú principal
        cout << "1. Comprar artículo\n2. Salir\nSeleccione: ";
        // Leer lo que el usuario elija
        cin >> eleccion;
        // Si elige 1, entonces solicitar número de artículo y cantidad
        if (eleccion == "1")
        {
            int numeroArticulo;
            cout << "Ingrese el número de artículo: ";
            cin >> numeroArticulo;
            // Necesitamos el índice del arreglo, que sería restarle 1 al número que elige el usuario pues los arreglos comienzan a contar en 0
            int indice = numeroArticulo - 1;
            // Validamos si el número de artículo está entre 0 y 3
            if (indice >= 0 && indice <= 3)
            {
                // Solicitamos cantidad
                int cantidad;
                cout << "Ingrese la cantidad que compra: ";
                cin >> cantidad;
                // Validar si la cantidad es correcta
                if (cantidad > cantidades[indice])
                {
                    cout << "No hay suficiente existencia" << endl;
                }
                else
                {
                    // En caso de que sí haya suficiente existencia, extraemos el costo
                    double costo = costos[indice];
                    // Sacamos el costo total
                    double total = costo * cantidad;
                    // Imprimimos
                    cout << "========================================" << endl;
                    cout << "Usted ha comprado " << articulos[indice] << " X " << cantidad << endl;
                    cout << "Total: " << total << endl;
                    cout << "GRACIAS POR SU COMPRA" << endl;
                    cout << "========================================" << endl;
                    // Y restamos la cantidad en el arreglo
                    cantidades[indice] = cantidades[indice] - cantidad;
                }
            }
            else
            {
                // Caso contrario, imprimimos que no es un artículo válido
                cout << "Número de artículo " << numeroArticulo << " inválido" << endl;
            }
        }
    }
}

Al ejecutarlo y pasarle datos de entrada de prueba el funcionamiento es correcto:

Ejecución del programa en C++. Manejo de todos los casos, compra, existencia, etcétera

Te dejo más sobre programación en C++.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Entradas recientes

Creador de credenciales web – Aplicación gratuita

Hoy te voy a presentar un creador de credenciales que acabo de programar y que…

17 horas hace

Desplegar PWA creada con Vue 3, Vite y SQLite3 en Apache

Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…

1 semana hace

Arquitectura para wasm con Go, Vue 3, Pinia y Vite

En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…

1 semana hace

Vue 3 y Vite: crear PWA (Progressive Web App)

En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…

1 semana hace

Errores de Comlink y algunas soluciones

Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…

1 semana hace

Esperar promesa para inicializar Store de Pinia con Vue 3

En este artículo te voy a enseñar cómo usar un "top level await" esperando a…

1 semana hace

Esta web usa cookies.