Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: ironserch en 21 Septiembre 2014, 15:54 pm



Título: Dudas programación en C
Publicado por: ironserch en 21 Septiembre 2014, 15:54 pm
Hola, necesito escribir un programa C mediante el cual se introduzcan 4 numeros enteros por teclado y que calcule la media aritmetica de los 4 numeros.

En principio el codigo que tengo es:


Código
  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4. void main()
  5. {
  6.    int n1, n2, n3, n4;
  7.  
  8.    printf("Introducir primer valor entero: \n\n");
  9.    scanf("%d", &n1);
  10.  
  11.    printf("Introducir segundo valor entero: \n\n");
  12.    scanf("%d", &n2);
  13.  
  14.    printf("Introducir tercer valor entero: \n\n");
  15.    scanf("%d", &n3);
  16.  
  17.    printf("Introducir cuarto valor entero: \n\n");
  18.    scanf("%d", &n4);
  19.  
  20.    printf("\n\nLa media aritmetica es: %d\n", (n1 + n2 + n3 + n4)/4 );
  21. }

El problema es que si introduzco los 4 numeros iguales, me lo hace correctamente; pero en cuanto meto por ejemplo otros numeros (p. ej. 2,1,2,1) me tendria que devolver 1,5. Se que ese ultimo "%d" me devuelve un numero entero, p. ej. en el ejemplo anterior me devolveria la parte entera de 1,5 es decir el 1. Pero probé cambiando "%d" por "%f" (float) e incluso por "%6.2f" pero me de vuelve 0.00 y 0.000000.

Asique mi duda es: ¿Como se pondria para que devolviera la media aritmetica y que saliese decimales?


Muchas gracias ;)


Título: Re: Dudas programación en C
Publicado por: vangodp en 21 Septiembre 2014, 16:15 pm
Estas usando el tipo int (entero) para las variables. No te va mostrar el valor real... en vez de usar int use float o bouble. En printf use el modificador adecuado %f en vez de %d para mostrar el resultado.


Título: Re: Dudas programación en C
Publicado por: rir3760 en 21 Septiembre 2014, 16:31 pm
¿Como se pondria para que devolviera la media aritmetica y que saliese decimales?
Cuando ambos operando del operador  "/" son enteros el resultado también lo es (por supuesto no hay parte decimal), para obtener un resultado con decimales por lo menos uno de ellos debe ser de tipo float, double o long double.

Para conseguirlo una opción es, como ya te comento vangodp, utilizar variables del mentado tipo, la opción mas simple es utilizar una literal, de esta forma:
Código
  1. printf("La media aritmetica es %f\n", (n1 + n2 + n3 + n4) / 4.0); /* 4.0 es de tipo double */

Un saludo


Título: Re: Dudas programación en C
Publicado por: vangodp en 21 Septiembre 2014, 17:05 pm
¿no hay que poner %f en vez de %d?   :huh: O eso creo jeje


Título: Re: Dudas programación en C
Publicado por: rir3760 en 21 Septiembre 2014, 17:19 pm
¿no hay que poner %f en vez de %d?
Ouch! Claro que si, eso me pasa por tasajear el código sin compilarlo. Ya corregí mi mensaje anterior.

Un saludo


Título: Re: Dudas programación en C
Publicado por: ironserch en 21 Septiembre 2014, 17:44 pm
Muchas gracias!!  :D :D :D :D