SoloCodigo

Programación General => C/C++ => Visual C++ => Mensaje iniciado por: -.-JP en Miércoles 13 de Octubre de 2010, 10:44

Título: VALIDAR double
Publicado por: -.-JP en Miércoles 13 de Octubre de 2010, 10:44
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;

        }
Título: Re: VALIDAR double
Publicado por: Amilius en Miércoles 13 de Octubre de 2010, 19:44
Intenta usando scanf_s, "%lf" indica que esperamos un double, el fflshd(stdin) es para limpiar la entrada de datos si es que el usuario ingreso basura en lugar de lo esperado.

Código: C++
  1.  
  2. #include <stdio.h>
  3. ....
  4.         double xp = 0.0;
  5.         double yp = 0.0;
  6.         scanf_s("%lf", &xp);
  7.         fflush(stdin);
  8.         printf("%fn", xp);
  9.         scanf_s("%lf", &yp);
  10.         fflush(stdin);
  11.         printf("%fn", yp);
  12.  
  13.  
Título: Re: VALIDAR double
Publicado por: -.-JP en Miércoles 13 de Octubre de 2010, 22:44
Mas que todo ocupo que si me ingresan una letra que no se caiga el programa =S e buscado y tratado de varias maneras pero sigue sin funcionar
Título: Re: VALIDAR double
Publicado por: Radger en Jueves 14 de Octubre de 2010, 14:10
Puedes guardar la entrada del usuario en un char* o std::string de esta manera el programa no se cerrara y solo tendrias que comprobar que la cadena tiene los datos que necesitas.