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.
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.
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.
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.
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++.
Hoy te voy a presentar un creador de credenciales que acabo de programar y que…
Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…
En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…
En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…
Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…
En este artículo te voy a enseñar cómo usar un "top level await" esperando a…
Esta web usa cookies.