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