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

Ayuda para validacion de datos

Estas en el tema de Ayuda para validacion de datos en el foro de C/C++ en Foros del Web. HOLaaaaa. soy nuevo en esto de la programacion en C++ y quisiera que alguien por favor me ayudara. Necesito hacer un programa que me calcule ...
  #1 (permalink)  
Antiguo 23/04/2010, 08:22
 
Fecha de Ingreso: abril-2010
Mensajes: 15
Antigüedad: 14 años
Puntos: 0
Ayuda para validacion de datos

HOLaaaaa.

soy nuevo en esto de la programacion en C++ y quisiera que alguien por favor me ayudara.
Necesito hacer un programa que me calcule unos datos matematicos (YA LO HICE) pero quiero que si el usuario me ingresa una letra yo pueda decirle error o poder darle algun mensaje para que ingrese un numero.

Me han dicho que con ASCII pero no tengo idea de como hacerlo, por favor si alguien me puede ayudar. Gracias de antemano. Le agradezco.
  #2 (permalink)  
Antiguo 23/04/2010, 21:11
 
Fecha de Ingreso: agosto-2008
Mensajes: 271
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: Ayuda para validacion de datos

Hola

Como defines el tipo de dato que te ingresa el usuario?
  #3 (permalink)  
Antiguo 26/04/2010, 11:32
 
Fecha de Ingreso: abril-2010
Mensajes: 15
Antigüedad: 14 años
Puntos: 0
Respuesta: Ayuda para validacion de datos

Pues yo los envio de tipo float. Puedes ver mis variables.


float z1,z2,z3,z4,r1,r2,r3,r4;
float a,b,c,d,x31,x32,aux,temp;
float ecuacion,determinante,r,inv,inv2;
float x11,x21,x12,x22,ecuacion1,ecuacion2;

// PIDO EL INGRESO DE LOS VALORES PARA HALLAR LA DETERMINANTE

printf ("\t\t\tVALORES DE LA ECUACION 1\n");

printf ("\x10 ingrese el valor de x1: ");
scanf ("%f",&a);
if ('ASCII' >=48 && 'ASCII'<=57)
{
printf ("\x10 ingrese el valor de x2: ");
scanf ("%f",&b);
if ('ASCII' >=48 && 'ASCII'<=57)
{

VALE PENA ACLARAR QUE ALGUNAS VARIABLES YA NO LAS UTILIZO, SINO QUE NO LAS HE BORRADO.
  #4 (permalink)  
Antiguo 26/04/2010, 11:34
 
Fecha de Ingreso: abril-2010
Mensajes: 15
Antigüedad: 14 años
Puntos: 0
Respuesta: Ayuda para validacion de datos

mUCHAS GRACIAS POR AYUDARME
  #5 (permalink)  
Antiguo 27/04/2010, 05:45
 
Fecha de Ingreso: abril-2010
Mensajes: 11
Antigüedad: 14 años
Puntos: 0
Respuesta: Ayuda para validacion de datos

Yo implementé una mínima validación para un programa chorra que hice de la siguiente forma (muy muy esquematizado):

// Declaras una cadena donde se almacenará el número
char numero[50];

// Utilizas un bucle que lea el supuesto número mientras no sea válido, por ej:

do
{
gets(numeroA);
fflush(stdin); // Vacía el buffer del teclado (evita algunos problemas de lectura)
} while (!esNumNatural(numero));

// Lo que está dentro del while es una función que recibe la cadena y devuelve true si es un número natural. Te pego la función:

Código C++:
Ver original
  1. bool esNumNatural (char *entrada)
  2. {
  3.     bool esCorrecto = true;
  4.  
  5.     if (strlen (entrada) != 0) // Comprueba que la cadena no esté vacía
  6.     {
  7.         for (unsigned int i = 0; i < strlen (entrada); i++) // Recorre la cadena, celda por celda
  8.         {
  9.             if(!isdigit (entrada[i])) // Si el contenido de la celda no es un digito, esCorrecto pasa a valer falso
  10.                 esCorrecto = false;
  11.         }
  12.     }
  13.     else
  14.         esCorrecto = false;
  15.  
  16.     if (atoi(entrada) == 0) // No se considera natural el número cero
  17.         esCorrecto = false;
  18.  
  19.     return esCorrecto;
  20. }

Creo que jugando con estas pautas (tus números son en coma flotante, así que tienes que controlar esto) puedes conseguir algo útil.

Hasta luego.
  #6 (permalink)  
Antiguo 27/04/2010, 07:11
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Ayuda para validacion de datos

Tengo entendido que el mismo scanf hace esa valoracion....

Scanf devuelve un entero, que significa cuantos de tus datos que pediste se ingresaron correctamente.

En este caso hace:

while ( scanf ("%f",&a) <> 1 );

Eso te queda bucleado hasta que se ingrese un numero valido reconocible como float.

Última edición por sam90; 27/04/2010 a las 16:05
  #7 (permalink)  
Antiguo 27/04/2010, 08:54
 
Fecha de Ingreso: abril-2010
Mensajes: 15
Antigüedad: 14 años
Puntos: 0
Respuesta: Ayuda para validacion de datos

Segun tengo entendido el * significa un puntero (char *entrada), no pasa nada que yo no sepa manejar muy bien punteros????????????????

Para jbourne. disculpe el no saber. Muchas gracias
  #8 (permalink)  
Antiguo 29/04/2010, 05:56
 
Fecha de Ingreso: abril-2010
Mensajes: 11
Antigüedad: 14 años
Puntos: 0
Respuesta: Ayuda para validacion de datos

Yo tampoco sé mucho de punteros, pero si te fijas la variable que declaramos es una cadena de caracteres (char numero[50]) y la forma que te indico es la que me funciona para pasar una variable de tipo cadena a una función.

Tampoco te bloquees mucho con el tema de los punteros, si nos abstraemos un poco, es una función que reciba una cadena de caracteres y comprueba si los caracteres se corresponden con un dígito. Si todos los caracteres son un digito, la función lo identifica como un nº natural y devuelve true. Así cuando luegos utilizas la función atoi para convertir la cadena en un nº entero, tienes la seguridad de que has validado mínimamente el dato.
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 15:23.