📂 Archivo técnico
Este contenido lo publiqué en un blog anterior durante mis primeros proyectos. Hoy lo conservo aquí como referencia y ejemplo práctico para quienes quieran reforzar la lógica de programación.
En este programa se valida que el usuario ingrese un número entero ya sea con signo o sin él. No se admiten decimales, espacios en blanco o caracteres extraños.
Ejemplos permitidos:
+5, 153, -15
Nota: En este programa nos estamos apoyando de una función de la biblioteca estándar de C (incluyendo el archivo de cabecera cctype). La función usada es isdigit, y como dice la documentación, permite comprobar si un caracter dado es igual a alguno de los siguientes caracteres:
0 1 2 3 4 5 6 7 8 9
Contenido
ToggleCódigo fuente en C++
/*
Valores enteros validos: numeros solos o con signo +/- delante
10
+5
-5
*/
#include
#include
#include
#include
using namespace std;
bool esEntero(string);
int main() {
string linea;
int numero;
bool repite = true;
do {
cout << "\nIngrese un valor entero: ";
getline(cin, linea);
if (esEntero(linea)) {
repite = false;
} else {
cout << "No has ingresado un valor entero. Intentalo nuevamente" << endl;
}
} while (repite);
numero = atoi(linea.c_str());
cout << "El numero ingresado fue: " << numero << endl;
cin.get();
return 0;
}
bool esEntero(string linea) {
bool esEntero = true;
int longitud = linea.size();
if (longitud == 0) {
esEntero = false;
} else if (longitud == 1 && !isdigit(linea[0])) {
esEntero = false;
} else {
int indice = 0;
if (linea[0] == '+' || linea[0] == '-') {
indice = 1;
} else {
indice = 0;
}
while (indice < longitud) {
if (!isdigit(linea[indice])) {
esEntero = false;
break;
}
indice++;
}
}
return esEntero;
}

