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

📂 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

				
					/*
	Valores enteros validos: numeros solos o con signo +/- delante
	10
	+5
	-5
*/

#include <iostream>
#include <string>
#include <cctype>
#include <cstdlib>

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;	
}
				
			

Añade aquí tu texto de cabecera

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio