Foros del Web » Programación para mayores de 30 ;) » Programación General »

Que no explote la variable integer. Turbo C++

Estas en el tema de Que no explote la variable integer. Turbo C++ en el foro de Programación General en Foros del Web. Alguien me podria facilitar alguna rutina en Turbo C++ para cuando quiero hacer un scanf para guardar lo que el usuario digite en una variable ...
  #1 (permalink)  
Antiguo 25/04/2005, 22:28
 
Fecha de Ingreso: junio-2004
Mensajes: 392
Antigüedad: 20 años, 5 meses
Puntos: 0
Que no explote la variable integer. Turbo C++

Alguien me podria facilitar alguna rutina en Turbo C++ para cuando quiero hacer un scanf para guardar lo que el usuario digite en una variable tipo integer. Pero que el codigo no permita que se introduzca ningun caracter que no sea numero (claro que cuando le den a "Enter" ya la insercion debe terminar y coger el valor que haya digitado hasta el momento) y que ademas no exceda el valor maximo del tipo entero (creo que son 65,536 o algo asi).

Gracias
  #2 (permalink)  
Antiguo 26/04/2005, 04:08
 
Fecha de Ingreso: diciembre-2002
Mensajes: 23
Antigüedad: 21 años, 11 meses
Puntos: 0
¿Con 'Turbo C++' te refieres a que estas programando en lenguaje C o C++?

Si estas utilizando C:

Crear tu propia funcion que realize esa validacion es (relativamente) sencillo. Los pasos que se requieren son:

1) Lee la entrada con fgets y elimina el caracter '\n'.
2) Verifica que la longitud de la cadena no sea 0.
3) Trata de convertir la cadena al tipo long con la funcion strtol.

La ventaja que tiene la funcion strtol sobre atoi es que revisando su valor de retorno y el argumento que modifica (de tipo char **) se puede hacer un diagnostico sobre si la cadena se pudo convertir con exito (en parte o en su totalidad) y si el valor esta dentro del rango permitido para el tipo long.

Despues de esto tienes que verificar que el valor este dentro del rango permitido para el tipo int.

Un saludo
  #3 (permalink)  
Antiguo 26/04/2005, 05:59
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 7 meses
Puntos: 17
Usa el tipo long en vez de int, y el máximo será suficiente (4294967295 como unsigned).
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 14:38.