Título: Prevenir la introducción de un valor de punto flotante en un entero Publicado por: greenchar en 25 Agosto 2011, 23:00 pm Resulta que tengo un problema, tengo una variable entera, al introducir un numero que sea por ejemplo, .1, el programa, al momento de ejecutar se cicla y no hay manera de pararlo(solo con Ctrl + c). Eh intentado un montón de cosas pero ninguna funciona. :huh:
No eh podido implementar una excepción, intente con sentencias if, bucles while, del tipo "si n no es mayor que cero, no ejecutes", pero lo único que consigo es lo que esta en la screenshot de abajo. :-( Aqui esta el pedazo de código en donde quiero implementar el "filtro": Código
(http://i51.tinypic.com/dh5lpd.png) Horriblemente se cicla... Gracias de antemano. :) Título: Re: Prevenir la introducción de un valor de punto flotante en un entero Publicado por: rir3760 en 26 Agosto 2011, 01:11 am Supongo el lenguaje de programación es C, ¿Correcto?
Si es así puedes utilizar la función strtol (prototipo en <stdlib.h>) para validar la entrada del usuario. Un ejemplo de su uso se encuentra en este mensaje (http://foro.elhacker.net/programacion_cc/cisnumeric_vb6_a_c-t336564.0.html;msg1653895#msg1653895). Un saludo Título: Re: Prevenir la introducción de un valor de punto flotante en un entero Publicado por: Karman en 26 Agosto 2011, 02:52 am Resulta que tengo un problema, tengo una variable entera, al introducir un numero que sea por ejemplo, .1, el programa, al momento de ejecutar se cicla y no hay manera de pararlo(solo con Ctrl + c). Eh intentado un montón de cosas pero ninguna funciona en windows no pasa nada, solo retorna la parte entera (0), de todas formas, fijate si esta solución (media rara) te sirve: Código
S2 Título: Re: Prevenir la introducción de un valor de punto flotante en un entero Publicado por: criskapunk en 26 Agosto 2011, 05:53 am El código no es mio, sino una mera traducción a C de algo que vi en otro foro, espero te sirva.
Código
Un saludo. Título: Re: Prevenir la introducción de un valor de punto flotante en un entero Publicado por: pucheto en 26 Agosto 2011, 06:27 am El código no es mio, sino una mera traducción a C de algo que vi en otro foro, espero te sirva. Por problemas de la precisión que tiene el tipo float, podria llegar a dar que un numero es decimal, cuando es entero. Lo mismo con el codigo de karman.Código
Un saludo. Lo mejor q se puede hacer en este caso es leer el input como un string, validar que sea lo que quiere, y despues, en caso de que sea valido, realizar las conversiones que correspondan. Título: Re: Prevenir la introducción de un valor de punto flotante en un entero Publicado por: criskapunk en 26 Agosto 2011, 14:11 pm @pucheto
Si, eso es verdad. En el código que publiqué si se llega a ingresar un número con 7 o más cifras decimales lo toma como entero, por ejemplo el 10.0000001 lo toma como entero, pero no conozco tanto de C todavía :xD Un saludo. Título: Re: Prevenir la introducción de un valor de punto flotante en un entero Publicado por: Karman en 26 Agosto 2011, 14:34 pm Por problemas de la precisión que tiene el tipo float, podria llegar a dar que un numero es decimal, cuando es entero. Lo mismo con el codigo de karman. Lo mejor q se puede hacer en este caso es leer el input como un string, validar que sea lo que quiere, y después, en caso de que sea valido, realizar las conversiones que correspondan. si, es cierto (por eso aclaré que era una solución rara), pero para el tipo de problema (obtener un número dentro de un rango acotado) utilizaría esa solución, ahora si hay problemas de precisión incluso podría usar "double" para estirar un poco más su funcionalidad, me parece que comprobar/realizar conversiones es más para problemas más complejos (que requieran justamente más precisión) S2 Título: Re: Prevenir la introducción de un valor de punto flotante en un entero Publicado por: do-while en 26 Agosto 2011, 21:42 pm ¡Buenas!
Normalmente, al leer elementos de uno en uno, cuando pasan cosas de estas scanf retorna 0 (cero elementos leidos), asi que puedes utilizar este codigo: Código ¡Saludos! Título: Re: Prevenir la introducción de un valor de punto flotante en un entero Publicado por: greenchar en 3 Enero 2012, 19:30 pm Me habia quedado con la duda pero la solucion de do-while funciona perfectamente, muchas gracias a todos!! :)
|