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

[0] Índice de Mensajes

Ir a la versión completa