Título: Esto es un error o es que lo realice mal?? Publicado por: αиσиyмσυรCร en 12 Julio 2013, 00:45 am El enunciado del ejercicio es este:
Crear un programa que use tres variables x,y,z. Las tres serán números reales, y nos bastará con dos cifras decimales. Deberá pedir al usuario los valores para las tres variables y mostrar en pantalla cual es el mayor de los tres números tecleados. Yo hice este código y ahora mostrare que pasa cuando lo pruebo ¿eso debería ser así?¿Que tengo mal?... Código: #include <stdio.h> http://gyazo.com/8365c6a48c13ed575eb620db2850c7e2 Me podéis ayudar un saludo y gracias de antemano :D Título: Re: Esto es un error o es que lo realice mal?? Publicado por: ivancea96 en 12 Julio 2013, 01:06 am Código
Le quité los getchar() y le puse al final un scanf(). Parece que el getchar daba algun problema :o (El scanf del final, ponle lo que sea, es solo para detener el programa) Título: Re: Esto es un error o es que lo realice mal?? Publicado por: rir3760 en 12 Julio 2013, 02:30 am Le quité los getchar() y le puse al final un scanf(). Parece que el getchar daba algun problema Cierto. La causa del error son las llamadas a getchar:Código Por ejemplo si se introduce "123.456" getchar lee y descarta el primer carácter (el '1'), scanf procesa los restantes almacenando el valor 23.456 en la variable "x", de ahí los resultados incorrectos. Un saludo Título: Re: Esto es un error o es que lo realice mal?? Publicado por: eferion en 12 Julio 2013, 09:24 am es que getchar solo lee un caracter... si tu introduces 1234.56 por teclado, el buffer de entrada va a contener una cadena de caracteres tal que "1234.56"... luego ya es responsabilidad tuya, mediante una función de la librería estándar o mediante una función propia, convertir esa cadena de texto en un número.
Con lo comentado, si tu introduces 1234.56 y sólo pones un getchar, el getchar va a leer un único carácter, el primero que le llegue más concretamente, que será el "1" ( ojo, no un uno numérico, sino el carácter que representa al número 1 ), y dejará en el buffer de entrada el resto, "234.56". Título: Re: Esto es un error o es que lo realice mal?? Publicado por: αиσиyмσυรCร en 12 Julio 2013, 09:41 am Ok ya lo entendí y se corrigió pero ya que estamos yo ponía los getchar(); para que se viera lo que introducía no sabia que podía dar esos errores.
Al final deje así el código y funciona perfectamente: Código: #include <stdio.h> Con el doble getchar me dejo de tener que añadir otro valor como hacia con scanf y se para :) y hay no le afecta a nada en especial ya que el programa hace la función que debe realizar correctamente. Gracias por vuestra ayuda :D |