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

como validar solo numeros

Estas en el tema de como validar solo numeros en el foro de C/C++ en Foros del Web. hola a todos, tengo q validar datos numeros, q solo se introduzcan numeros,y si es incorrecto vuelve a introducir. Lo intentado de 2 maneras pero ...
  #1 (permalink)  
Antiguo 15/05/2006, 11:16
 
Fecha de Ingreso: febrero-2002
Ubicación: Navarra
Mensajes: 701
Antigüedad: 22 años, 3 meses
Puntos: 2
como validar solo numeros

hola a todos, tengo q validar datos numeros, q solo se introduzcan numeros,y si es incorrecto vuelve a introducir. Lo intentado de 2 maneras pero falla las dos. ¿Alguien puede ayudarme?
do{
printf("Edad: ");
scanf("%d", &datos_cliente.edad);
}while(!validanumeros(datos_cliente.edad));

******** DE esta manera me dice q no coinciden los tipos int con char *
int validanumeros(char *cadena)
{
int numeros;
int i;
//numeros=atoi(cadena);

for (i=0; i<strlen(numeros); i++)
{
if (numeros[i]<'0' || numeros[1]>'9')
{
return 0;
}
}
return 1;
//return(atoi);
}

*****************No da errores pero al introducir no me deja y me pide continuamente introducir
int validanumeros(int numero)
{
if(numero<'0' || numero>'9')
return 0;
else
return 1;
}
__________________
asp, php, .net, adaptandose a las necesidades
  #2 (permalink)  
Antiguo 15/05/2006, 11:58
 
Fecha de Ingreso: abril-2006
Ubicación: Acapulco Gro. México
Mensajes: 483
Antigüedad: 18 años
Puntos: 2
Podrias en lugar de leer un numero leer un caracter,

char temp;

scanf("%c", temp);

if(temp > '0' && temp < '9')
datos_cliente.edad = temp - '0';

no exactamente pero la idea es esa.
intentalo.
  #3 (permalink)  
Antiguo 15/05/2006, 12:23
 
Fecha de Ingreso: abril-2006
Ubicación: Acapulco Gro. México
Mensajes: 483
Antigüedad: 18 años
Puntos: 2
Vamos nuevamente.

Despues de unas pruebas, creo que encontre algo mejor, ya que por lo general no uso stdio.h.

al parecer la funcion scanf tiene un valor de retorno que nos hace esta validacion es decir si el casting tiene exito segun tus daots a leer y el formato usado te retornara un valor por encima o por debajo de 0(true o false).


en tu caso scanf("%d", &daos_cliente.edad);

si ingresas por el teclado un numero te retornara true, y si ingresas un caracter diferente a un numero retornara false.

por tanto podrias hacer :

while(! scanf("%d", &datos_cliente.edad));

esto permanecera hasi asta leer un numero correcto.

Espero esta si sea la correcta.
saludos
  #4 (permalink)  
Antiguo 15/05/2006, 14:38
 
Fecha de Ingreso: febrero-2002
Ubicación: Navarra
Mensajes: 701
Antigüedad: 22 años, 3 meses
Puntos: 2
solo numeros

no entendi como debo hacer:
do{
printf("Introduczca edad: ");
}while(!scanf("%d", datos_cliente.edad));

a parte de esto tengo otro problema, despues de tener todo el codigo echo, peudo dar alta, modificar, borrar y listar, cuadno salgo del menu, y guardo los datos, resulta q el arbol llega vacío, proque puede ser? YA he probado ha hcer paso a paso y no conseguido ver que ocurre. Podrias echarme una mano? el codigo es largo de poenr aqui, puedo poner la funcion de guardar, pero no es en ello donde falla sino justo al entrar el arbol esta vacio.
__________________
asp, php, .net, adaptandose a las necesidades
  #5 (permalink)  
Antiguo 15/05/2006, 15:04
Avatar de yournightmare86  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 875
Antigüedad: 18 años
Puntos: 9
A lo del scanf te propongo esto:

int edad,ok;

do{
printf("\n Introduce edad: ");
ok=scanf("%d",&edad);
} while(!ok);
  #6 (permalink)  
Antiguo 15/05/2006, 17:22
 
Fecha de Ingreso: abril-2006
Ubicación: Acapulco Gro. México
Mensajes: 483
Antigüedad: 18 años
Puntos: 2
Eso es bueno, que tengas ideas propias, y si , si funcionaría, y ademas estaria mas claro que lo que yo sugerí,. puede hacerlo como mas le guste.

Si lo ideal seria un bucle do, ya que una vez leido se sale del bucle y la variable queda guardada.

En cuanto al lo de salvar tus datos, no podria decir nada sin ver el codigo que puede ser el causante del error.
  #7 (permalink)  
Antiguo 16/05/2006, 09:53
 
Fecha de Ingreso: febrero-2002
Ubicación: Navarra
Mensajes: 701
Antigüedad: 22 años, 3 meses
Puntos: 2
funcion guardar

el error esta justo antes de la funcion ya que llega el arbol vacio.
no se qe codigo pasarte, te importa si te envio el archivo entero? o te doy todo el .hpp, no puedo darte menos ya q no se donde falla ni el porque solo q no llega la infomracion
__________________
asp, php, .net, adaptandose a las necesidades
  #8 (permalink)  
Antiguo 16/05/2006, 09:57
 
Fecha de Ingreso: febrero-2002
Ubicación: Navarra
Mensajes: 701
Antigüedad: 22 años, 3 meses
Puntos: 2
Cita:
Iniciado por yournightmare86
A lo del scanf te propongo esto:

int edad,ok;

do{
printf("\n Introduce edad: ");
ok=scanf("%d",&edad);
} while(!ok);
lo que necesito es validar &datos_cliente.edad pero como lo valido, ustedes me dicen sin datos_cliente y debo ponerlo para q guarde la informacin en la estructura. pero qeu funcion hago para validar?
__________________
asp, php, .net, adaptandose a las necesidades
  #9 (permalink)  
Antiguo 16/05/2006, 11:55
 
Fecha de Ingreso: abril-2006
Ubicación: Acapulco Gro. México
Mensajes: 483
Antigüedad: 18 años
Puntos: 2
A eso me refiero, que la funcion scanf valida el valor leido,

do
{
printf("....");
}while(! scanf("%d", &datos_cliente.edad);

esto te mantendra capturando asta que el valor leido sea un numero.

si por error introduces un caracter, volvera aleer.

en cuanto a si masndas el fichero tienes que mandar en el que se encuentra la implementacion. imagino que es el .c o .cpp
  #10 (permalink)  
Antiguo 16/05/2006, 11:56
 
Fecha de Ingreso: abril-2006
Ubicación: Acapulco Gro. México
Mensajes: 483
Antigüedad: 18 años
Puntos: 2
tambien podria estar fallando la forma en que manejas los ficheros.
  #11 (permalink)  
Antiguo 16/05/2006, 13:44
 
Fecha de Ingreso: febrero-2002
Ubicación: Navarra
Mensajes: 701
Antigüedad: 22 años, 3 meses
Puntos: 2
guardar

me dices q te pase por aki todo el .cpp?
o te envio por correo, es algo largo.
__________________
asp, php, .net, adaptandose a las necesidades
  #12 (permalink)  
Antiguo 16/05/2006, 18:52
 
Fecha de Ingreso: abril-2006
Ubicación: Acapulco Gro. México
Mensajes: 483
Antigüedad: 18 años
Puntos: 2
Ok, por correo:

[email protected]
  #13 (permalink)  
Antiguo 17/05/2006, 09:20
 
Fecha de Ingreso: febrero-2002
Ubicación: Navarra
Mensajes: 701
Antigüedad: 22 años, 3 meses
Puntos: 2
guardar

Cita:
Iniciado por Nivel7
ya te envie el correo a esa direccion, ademas te agregado a mi msn, por si prefieres directamente
Gracias
__________________
asp, php, .net, adaptandose a las necesidades
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 17:33.