El siguiente programa tiene posee dos funciones para validar si el número ingresado es un entero o no:
entero(): lee una cadena la recorre si todos los valores son enteros devuelve true de lo contrario devuelve false.
validar(): recibe por parametro el mensaje para pedir el numero, se guarda en una cadena para recorrerlo con entero(), si ingresa un numero se transforma la cadena a entero con la funcion atoi, de lo contrario da un mensaje de error y vuelve a empezar el ciclo.
entero(): lee una cadena la recorre si todos los valores son enteros devuelve true de lo contrario devuelve false.
validar(): recibe por parametro el mensaje para pedir el numero, se guarda en una cadena para recorrerlo con entero(), si ingresa un numero se transforma la cadena a entero con la funcion atoi, de lo contrario da un mensaje de error y vuelve a empezar el ciclo.
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cstring>
using namespace std;
bool entero(char *a);
int validar(string a);
void error();
char nuS[100];
int main(){
int x;
string mensaje="Ingrese un numero: ";
x=validar(mensaje);
cout<<"El valor de x es: "<<x;
system("pause");
return 0;
}
int validar(string a){
do{
cout<<a;
cin>>nuS;
if(!entero(nuS)){
error();
}
}while(!entero(nuS));
return atoi(nuS);
}
void error(){
cout<<"\nDato no valido, verifique.."<<endl;
}
bool entero(char *a){
for(int i = 0; i<strlen(a); i++){
if(!isdigit(a[i])){
return false;
}
}
return true;
}
Gracias, me funciono tu codigo, saludos.
ResponderBorrar