C/Visual C - validar solo numeros

 
Vista:

validar solo numeros

Publicado por Cris (9 intervenciones) el 15/05/2006 18:31:49
hola muy buenas a todos, tengo que hacer que al introducir la edad, codigoa, pistas, sean solo valores numericos y si no es asi q repita la introducccion hasta q este correcto. ¿Puede alguien ayudarme a validar? no puedo utilizar isdigt ni esas cosas.

***CON ESTO RECOJO EL DATO DE LA EDAD
do{
printf("Edad: ");
scanf("%d", &datos_cliente.edad);
}while(!validanumeros(datos_cliente.edad));

***VALIDO LA EDAD DE UNA FORMA:
int validanumeros(int numero) *************Si pongo asi, continuamente me pide introducir
{
if(numero<'0' || numero>'9')
return 0;
else
return 1;
}
****VALIDO DE OTRA FORMA
int validanumeros(char *cadena) ********asi me dice error, q es int y no char *
{
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);
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:validar solo numeros

Publicado por fernando.gomez (1603 intervenciones) el 16/05/2006 21:43:06
int validaNumeros(const char* szCadena, int longitudCadena)
{
int cadenaValida = FALSE;
for (int i = 0; i < longitudCadena && !cadenaValida; i++)
{
cadenaValida = isdigit(szCadena[i]) ? TRUE : FALSE;
}

return cadenaValida;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:validar solo numeros

Publicado por pako (2 intervenciones) el 17/05/2006 15:29:42
el codigo no funciona....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:validar solo numeros

Publicado por Juan (68 intervenciones) el 17/05/2006 17:14:53
int validaNumeros(const char* szCadena, int longitudCadena)
{
int cadenaValida = TRUE;
for (int i = 0; i < longitudCadena && cadenaValida; i++)
{
if(! isdigit(szCadena[i]) )
cadenaValida = FALSE;
}

return cadenaValida;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:validar solo numeros

Publicado por pako (2 intervenciones) el 17/05/2006 17:40:30
creo que sigue estando mal... no se les pasa algo???
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:validar solo numeros

Publicado por Juan (68 intervenciones) el 17/05/2006 19:38:24
A ver pako porque esta malo.
La logica de la solucion que yo plantee es la siguiente:
Asumimos de entrada que la cadena es valida, y revisamos caracter por caracter. Si alguno de ellos no es numero se le asigna al logico falso y se sale del para y retorna falso.
Si el numero es totalmente numerico, nunca entra en el condicional y sale del ciclo porque alcanza el tamaño de la candea y retorna verdad
Cual es el error?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar