Autor
|
Tema: Esto es un error o es que lo realice mal?? (Leído 2,331 veces)
|
αиσиyмσυรCร
Desconectado
Mensajes: 83
[αиσиyмσυร̲̅Cร̲̅]
|
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?... #include <stdio.h>
main(){
float x, y, z; float mayor;
printf("Introduce el valor de x: "); getchar(); scanf("%f", &x); getchar(); printf("Introduce el valor de y: "); getchar(); scanf("%f", &y); getchar(); printf("Introduce el valor de z: "); getchar(); scanf("%f", &z); getchar();
if ((x>y)&&(x>z)) mayor=x; else if (y>z) mayor=y; else mayor=z;
printf("El mayor de los 3 numeros introducidos es => %f", mayor); getchar();
} http://gyazo.com/8365c6a48c13ed575eb620db2850c7e2Me podéis ayudar un saludo y gracias de antemano
|
|
« Última modificación: 12 Julio 2013, 00:54 am por αиσиyмσυรCร »
|
En línea
|
|
|
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
#include <stdio.h> main(){ float x, y, z; float mayor; printf("Introduce el valor de x: "); scanf("%f", &x); printf("Introduce el valor de y: "); scanf("%f", &y); printf("Introduce el valor de z: "); scanf("%f", &z); if ((x>y)&&(x>z)) mayor=x; else if (y>z) mayor=y; else mayor=z; printf("El mayor de los 3 numeros introducidos es => %f", mayor); scanf("%f", &y); }
Le quité los getchar() y le puse al final un scanf(). Parece que el getchar daba algun problema (El scanf del final, ponle lo que sea, es solo para detener el programa)
|
|
|
En línea
|
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
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: printf("Introduce el valor de x: ");
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
|
|
|
En línea
|
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language
|
|
|
eferion
Desconectado
Mensajes: 1.248
|
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".
|
|
|
En línea
|
|
|
|
αиσиyмσυรCร
Desconectado
Mensajes: 83
[αиσиyмσυร̲̅Cร̲̅]
|
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: #include <stdio.h> main(){ float x, y, z; float mayor; printf("Introduce el valor de x: "); scanf("%f", &x); printf("Introduce el valor de y: "); scanf("%f", &y); printf("Introduce el valor de z: "); scanf("%f", &z); if ((x>y)&&(x>z)) mayor=x; else if (y>z) mayor=y; else mayor=z; printf("El mayor de los 3 numeros introducidos es => %f", mayor); getchar(); getchar(); } 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
|
|
« Última modificación: 12 Julio 2013, 09:43 am por αиσиyмσυรCร »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
como crear un programa que me realice inventarios con imágenes
Programación General
|
_vicho_
|
1
|
3,699
|
23 Noviembre 2011, 23:45 pm
por Littlehorse
|
|
|
Porque me sale error con esto? {C}
Programación C/C++
|
Anastacio
|
4
|
3,259
|
16 Febrero 2012, 19:49 pm
por Anastacio
|
|
|
Tengo una duda al compilar mi programa me marca error en esto
.NET (C#, VB.NET, ASP)
|
Ivs_mx
|
2
|
3,398
|
2 Octubre 2012, 15:52 pm
por leosansan
|
|
|
Requiero una persona que realice HaaS
Hacking
|
Oxom
|
0
|
3,199
|
11 Mayo 2023, 11:04 am
por Oxom
|
|