Validación en C++ de solo números enteros con o sin signo y sin decimales

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

Más información sobre la función isdigit: http://www.cplusplus.com/reference/cctype/isdigit/

Código fuente en C++

Validación de entrada de datos en C++ usando while y do-while

En esta entrada se escriben dos programas que permiten realizar la validación de la entrada de un valor entero para que cumpla cierta condición. Se considerará la variable edad la cual deberá almacenar un valor que se encuentre entre 18 y 100.

Si se ingresa algún número fuera de dicho intervalo, el programa deberá evitar continuar con el flujo del programa y seguirá pidiendo que se ingrese un valor correcto.

Usando bucle "while"

En este primera forma se utiliza el bucle while. Esta estructura de control empieza verificando que se cumpla la condición especificada entre los paréntesis, es decir:

edad < 18 || edad > 100

La condición para que el bucle se siga ejecutando (y por lo tanto, el programa se quede bloqueado pidiendo un valor correcto) es que se ingrese un valor menor a 18 o mayor a 100.

Si el usuario ingresa un número entre 18 y 100, se dejaría de cumplir la condición del bucle haciendo que éste termine y se prosiga ejecutando el resto del programa.

Este bucle puede nunca a llegar a ejecutarse si es que desde un primer momento no se llega a cumplir la condición.

				
					#include <iostream>

using namespace std;

int main() {
	int edad;

	cout << "\n\tIngrese una edad entre 18 y 100: ";
	cin >> edad;

	while (edad < 18 || edad > 100) {
		cout << "\tLa edad ingresada es incorrecta. Intente nuevamente.." << endl;
		cout << "\n\tIngrese una edad entre 18 y 100: ";
		cin >> edad;
	}

	cout << "\n\tHa ingresado la edad correctamente: " << edad << endl;

	cin.get();
	return 0;
}
				
			

Usando el bucle "do-while"

A diferencia del bucle while, el bucle do-while primero ejecuta todas las instrucciones que fueron declaradas en el interior de su bloque, y al final realiza la evaluación de la condición especificada entre paréntesis. Es por eso que se dice que el bucle do-while siempre se ejecuta al menos una vez. Después de esto, su funcionamiento es idéntico al bucle while, evalúa la condición y se ejecuta mientras ésta se cumpla.

				
					#include <iostream>

using namespace std;

int main() {
	int edad;

	do {
		cout << "\n\tIngrese una edad entre 18 y 100: ";
		cin >> edad;
		
		if (edad < 18 || edad > 100) {
			cout << "\tLa edad ingresada es incorrecta. Intente nuevamente.." << endl;
		}
	} while (edad < 18 || edad > 100);

	cout << "\n\tHa ingresado la edad correctamente: " << edad << endl;

	cin.get();
	return 0;
}