cpp

C++ | Simulador de cajero automático

Siguiendo con los ejercicios de programación en C++ vamos a ver la solución a otro de ellos. En este caso se trata de simular un cajero automático de manera muy simple. El ejercicio dice así:

Realice un programa en C++ el cual simule todas las transacciones que realiza un cajero automático. El mismo debe desplegar el menú, indicar cuando la clave es incorrecta y enviar el mensaje cuando no hay suficientes fondos.

La clave o NIP

Comenzamos solicitando la clave y comprobando si la misma es correcta. Para ello definimos la clave de acceso correcta en el código, solicitamos al usuario la clave y comparamos.

// La clave correcta
const string claveCorrecta = "1234";
cout << "Bienvenido al cajero automático\n";
cout << "Ingrese la clave: ";
string clave = "";
cin >> clave;
if (clave != claveCorrecta)
{
    cout << "Clave incorrecta";
    // Con return detenemos la ejecución del programa
    return 0;
}
// Si llegamos hasta aquí, podemos estar seguros de que el usuario introdujo la clave correcta
cout << "Clave correcta\nBienvenido\n";

Como puedes ver, en caso de que la clave no sea correcta, detenemos la ejecución del programa. Obviamente puedes cambiar la clave.

Menú del cajero automático en C++

Ahora pasemos al menú. Solo tendremos la opción de retirar, en donde vamos a comprobar los fondos, pero primero vamos a centrarnos en el menú.

El programa se detiene cuando el usuario elija salir.

string eleccion = "";
// Menú
while (eleccion != "2")
{
    // Mostrar fondos
    cout << "Fondos disponibles: " << fondos << endl;
    // Imprimir menú
    cout << "1. Retirar dinero\n2. Salir\nSeleccione: ";
}

Ya dentro del menú si el usuario elige retirar, hacemos lo que se ve a continuación.

Retirar del cajero

Comenzamos con unos fondos simulados. En este caso lo he dejado en 5000, quedando así:

// Más arriba...
double fondos = 5000; // Simular fondos
//...
if (eleccion == "1")
{
    // Solicitar cuánto se retira
    double retiro;
    cout << "Ingrese cantidad a retirar: " << endl;
    cin >> retiro;
    // Comprobar si puede retirar
    if (retiro > fondos || retiro <= 0)
    {
        cout << "No puede retirar esa cantidad";
    }
    else
    {
        // En caso de que sí pueda retirar
        cout << "OK. Ha retirado " << retiro << endl;
        // Restamos los fondos existentes
        fondos = fondos - retiro;
        // Y el ciclo sigue...
    }
}

Verificamos si la cantidad es correcta. El usuario no puede retirar una cantidad de 0 o una que sobrepase lo que tiene en su cuenta.

En caso de que todo vaya bien, restamos el retiro de los fondos y volvemos a presentarle el menú en caso de que quiera volver a retirar.

Poniendo todo junto

Llegó el momento de ver el código completo. Queda así:

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

int main()
{
    // La clave correcta
    const string claveCorrecta = "1234";
    cout << "Bienvenido al cajero automático\n";
    cout << "Ingrese la clave: ";
    string clave = "";
    cin >> clave;
    if (clave != claveCorrecta)
    {
        cout << "Clave incorrecta";
        // Con return detenemos la ejecución del programa
        return 0;
    }
    // Si llegamos hasta aquí, podemos estar seguros de que el usuario introdujo la clave correcta
    cout << "Clave correcta\nBienvenido\n";
    double fondos = 5000; // Simular fondos

    string eleccion = "";
    // Menú
    while (eleccion != "2")
    {
        // Mostrar fondos
        cout << "Fondos disponibles: " << fondos << endl;
        // Imprimir menú
        cout << "1. Retirar dinero\n2. Salir\nSeleccione: ";
        cin >> eleccion;
        if (eleccion == "1")
        {
            // Solicitar cuánto se retira
            double retiro;
            cout << "Ingrese cantidad a retirar: " << endl;
            cin >> retiro;
            // Comprobar si puede retirar
            if (retiro > fondos || retiro <= 0)
            {
                cout << "No puede retirar esa cantidad";
            }
            else
            {
                // En caso de que sí pueda retirar
                cout << "OK. Ha retirado " << retiro << endl;
                // Restamos los fondos existentes
                fondos = fondos - retiro;
                // Y el ciclo sigue...
            }
        }
    }
    return 0;
}

Al momento de compilarlo, ejecutarlo y probarlo los resultados son correctos:

Simulando cajero automático en C++

En caso de que el post te haya gustado te invito a leer más sobre 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…

2 semanas 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…

2 semanas 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…

2 semanas 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…

2 semanas hace

Errores de Comlink y algunas soluciones

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

2 semanas 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…

2 semanas hace

Esta web usa cookies.