Autor
|
Tema: Dudas programación en C (Leído 1,894 veces)
|
ironserch
Desconectado
Mensajes: 14
|
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:#include <stdio.h> #include <math.h> void main() { int n1, n2, n3, n4; printf("Introducir primer valor entero: \n\n"); printf("Introducir segundo valor entero: \n\n"); printf("Introducir tercer valor entero: \n\n"); printf("Introducir cuarto valor entero: \n\n"); printf("\n\nLa media aritmetica es: %d\n", (n1 + n2 + n3 + n4 )/4 ); }
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
|
|
|
En línea
|
|
|
|
vangodp
Desconectado
Mensajes: 455
|
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.
|
|
|
En línea
|
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
¿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: printf("La media aritmetica es %f\n", (n1 + n2 + n3 + n4 ) / 4.0); /* 4.0 es de tipo double */
Un saludo
|
|
« Última modificación: 21 Septiembre 2014, 17:20 pm por rir3760 »
|
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
|
|
|
vangodp
Desconectado
Mensajes: 455
|
¿no hay que poner %f en vez de %d? O eso creo jeje
|
|
|
En línea
|
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
¿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
|
|
|
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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
algunas dudas en programacion BATCH(nuevo en esto de programacion)
Scripting
|
stock_C
|
8
|
9,014
|
19 Junio 2009, 18:08 pm
por frank30
|
|
|
Programación: Dudas, muchas dudas
Dudas Generales
|
GoRock
|
4
|
3,683
|
9 Marzo 2013, 03:39 am
por GoRock
|
|
|
dudas programación
Desarrollo Web
|
jemez44
|
1
|
1,464
|
23 Noviembre 2013, 17:24 pm
por #!drvy
|
|
|
Dudas programación en C
Programación C/C++
|
ironserch
|
3
|
1,818
|
21 Septiembre 2014, 02:57 am
por kaiserr
|
|
|
Dudas programación en C
Programación C/C++
|
ironserch
|
4
|
2,312
|
25 Septiembre 2014, 05:17 am
por rir3760
|
|