SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: aprendizdec en Miércoles 4 de Junio de 2008, 22:21

Título: Minifallo En El Código
Publicado por: aprendizdec en Miércoles 4 de Junio de 2008, 22:21
Buenas, un saludo a todo el foro.

Estoy aprendiendo C ahora, con los tutoriales que he encontrado por la red que por cierto parecen muy buenos.

Tengo un problema con un ejercicio que estoy tratando de hacer...

/*Escribir un programa (en lenguaje C) que:

1º) Pida por teclado dos números (datos enteros).
2º) Muestre por pantalla la media artimética de los números introducidos, pero, sólo en el caso de
que ambos números sean mayores que cero.

Código: Text
  1.  
  2. #include <stdio.h>
  3.  
  4. int main()
  5.  
  6. {
  7.     int a, b;
  8.     float media;
  9.    
  10.     printf("Introduzca primer numero: ");
  11.     scanf("%d", &a);
  12.     printf("Introduzca segundo numero: ");
  13.     scanf("%d", &b);
  14.    
  15.     media = ( a + b ) / 2;
  16.    
  17.     if ( a > 0 && b > 0 )
  18.     printf("%f", media);
  19.    
  20.     return 0;
  21. }
  22.  
C:\Documents and Settings\mikel\Escritorio>ejercicio6.exe
Introduzca primer numero: 5
Introduzca segundo numero: 2
3.000000

Por qué no sale 3.50000 ??

Tambien lo que voy a hacer es %2f para que no aparezcan tantos decimales..

Gracias!  :hola:
Título: Re: Minifallo En El Código
Publicado por: utz en Jueves 5 de Junio de 2008, 13:31
prueba declarando las variables antes del main xD

usa la libreria #include<stdlib.h>

y al final debes poner una pausa para ver  el resutado por pantalla y que el programa no pase de largo.

para hacer la pausa debes escribir:

system("pause");


tambien hay otros tipos de pausa, preo hay ya debes buscar tu xD


saludos
Título: Re: Minifallo En El Código
Publicado por: ProfesorX en Jueves 5 de Junio de 2008, 19:15
Cita de: "aprendizdec"
Buenas, un saludo a todo el foro.

Introduzca primer numero: 5
Introduzca segundo numero: 2
3.000000

Por qué no sale 3.50000 ??

El problema es que defines tus variables de tipo entero (int) y el numero 2 tambien es entero, como todos son enteros, los resultados son de tipo entero, y luego lo asigna a la variable float. El resultado de dividir 5+2 (7) entre 2 da 3 y sobra uno (en entero claro).

Para obtener un resultado float, al menos uno de los operandos debe ser float, ya sea que definas a y b de tipo float, o conviertas tu 2 a float. prueba lo siguiente:

Código: Text
  1.  
  2.     media = ( a + b ) / 2.0;
  3.  
  4.  

al poner 2.0, se convierte en float, y entonces ahora si obtendras un resultado float, 3.5

Saludos :hola:
Título: Re: Minifallo En El Código
Publicado por: shakka en Jueves 5 de Junio de 2008, 22:10
Citar
al poner 2.0, se convierte en float, y entonces ahora si obtendras un resultado float, 3.5

De igual forma podrias hacer casting explicito:

Código: Text
  1. media = ( a + b ) / (float) 2;
  2.  
Título: Re: Minifallo En El Código
Publicado por: S0LD13R en Viernes 6 de Junio de 2008, 19:59
La mejor forma es declarar las variables en tipo flotante.
float a, b, media;

Salu2