Programación General > C/C++
Validar Numeros
(1/1)
-.-JP:
buenas =)
podrai alguien ayduarme, tengo un programa que realiza calculos, y ocupo que el usuario solo digite numeros, letras se me cae el programa -.-. Como valido que solo digite numeros de tipo double??? les dejo parte del codigo:
:hitcomp: case '1':
{
system("cls");
system("color f5");
double xp;
double yp;
cout<<endl<<endl;
cout<<" PUNTO"<<endl;
cout<<" _____"<<endl;
cout<<endl<<endl<<endl;
cout<<"Digite (x,y) para crear Punto: "<<endl;
cout<<endl;
cout<<"X: ";
cin>>xp;
cout<<endl;
cout<<"Y: ";
cin>>yp;
menuPunto(xp,yp);
break;
}
alb:
Hola,
Tienes que comprobar que la lectura se pasa bien, y sino tratar el problema.
Cuando haces std::cin>>var_, si falla la instruction, std::cin se pone en error y tiene el flag fail puesto. Ya puedes probar su valor y preguntar por entrar une valor appropuesto.
Seria algo asi :
--- Código: C++ ---#include <iostream>#include <limits> bool entrar_doble(double &d_){ std::cin>>d_; if(std::cin.eof()) { // 'Ctrl+Z' - se cierra el stream std::cin.clear(); // borrar el flag de error return false; } else if(std::cin.fail()) { std::cin.clear(); // borrar el flag de error std::cin.ignore( std::numeric_limits<std::streamsize>::max(), 'n' ); // ir hasta el fin de la linea entrada por el utilisador return false; } return true;} int main(){ double X; std::cout << "X: " ; while(!entrar_doble(X)) { std::cout<<"X debe que ser un doble !n"; } std::cout<<"nn"<<X<<"n"; return 0; // succès}
Navegación
Ir a la versión completa