Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Como validar solo numeros en c++?

Estas en el tema de Como validar solo numeros en c++? en el foro de C/C++ en Foros del Web. Hola tengo una duda como puedo validar que el usuario solo ingrese numeros y supongamos que de casualidad ingrese una letra el programa normal corre ...
  #1 (permalink)  
Antiguo 28/09/2015, 20:33
 
Fecha de Ingreso: agosto-2014
Mensajes: 10
Antigüedad: 9 años, 7 meses
Puntos: 0
Pregunta Como validar solo numeros en c++?

Hola tengo una duda como puedo validar que el usuario solo ingrese numeros y supongamos que de casualidad ingrese una letra el programa normal corre pero como puedo corregir ese error. Este pequeño programa lo hice con el do while pero igual me deja poner letras. UTILIZO EL DEVC++. Muchas gracias

Código C++:
Ver original
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main ()
  5.  
  6. {
  7.     int base, alt, are;
  8.     char rpta;
  9.     do
  10.     {
  11.             do
  12.             {
  13.                 cout<<"Ingrese la base: ";
  14.                 cin>>base;
  15.                 if(base<=0)
  16.                     cout<<"ERROR. Vuelva ingresar la base >0"<<endl;
  17.        
  18.        
  19.             }while(base<=0);
  20.            
  21.             do
  22.             {
  23.                 cout<<"ingrese su altura: ";
  24.                 cin>>alt;
  25.                 if(alt<=0)
  26.                 cout<<"ERROR. Vuelva ingrear la altura >0"<<endl;
  27.             }while(alt<=0);
  28.            
  29.             are=base*alt/2;
  30.             cout<<"El area es: "<<are<<endl;
  31.             cout<<"DESEA REALIZAR OTRO CALCULO? (s-n)";
  32.             cin>>rpta;
  33.        
  34.     }while (rpta=='s'||rpta=='n');
  35.    
  36.     system ("pause");
  37. }
  #2 (permalink)  
Antiguo 29/09/2015, 01:01
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 6 meses
Puntos: 204
Respuesta: Como validar solo numeros en c++?

En vez de leer el dato como un número tienes que leerlo como una cadena, después coges esa cadena e intentas convertir su contenido a un número... si la conversión se realiza con éxito el usuario ha introducido un número.

Código C++:
Ver original
  1. std::string cad;
  2. std::cout << "Introduce un número: ";
  3. std::cin >> cad;
  4.  
  5. bool ok = true;
  6. for(std::string::const_iterator it=cad.begin(); it!=cad.end() && ok; ++it )
  7.   ok = isdigit(*it);
  8.  
  9. if(ok)
  10. {
  11.   int numero = atoi(cad.c_str());
  12.   std::cout << "El número introducido es: " << numero << std::endl;
  13. }
  14. else
  15. {
  16.   std::cout << "Error!!!" << std::endl;
  17. }

Lo suyo sería encapsular el código que intenta la conversión en una función para no tener que repetir código. No se, quizás algo del tipo:

Código C++:
Ver original
  1. bool StrToInt(const std::string& cadena, int& numero);
  2.  
  3. // ejemplo:
  4. std::string cad;
  5. std::cin >> cad;
  6.  
  7. int numero;
  8. if(StrToInt(cad, numero))
  9.   std::cout << "El número introducido es" << numero << std::endl;
  10. else
  11.   std::cout << "Error!!!" << std::endl;

Un saludo.

Etiquetas: c++
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:51.