Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Vale_JCH en 16 Marzo 2019, 01:51 am



Título: Float no marca decimales
Publicado por: Vale_JCH en 16 Marzo 2019, 01:51 am
Hola, es la primera vez que publico.
El problema consiste en que debo sacar el promedio de las edades de 10 personas y de ahí contar cuantas son mujeres y cuantos hombres, hasta ahí todo va bien; el problema es con float, que cuando hace la operación para sacar el promedio no salen los decimales, si sale el numero entero pero aparece algo así 7.00. No se si me explique bien.
Codigo:
Código:
/*Programa que determina al promedio de la edad de 10 personas y te dice 
cuantas con mujeres y cuantas son hombres*/
#include<stdio.h>
#include<conio.h>
main()
{
int edad,suma,i,hombre,mujer;
float prom;
char genero;
hombre = mujer = suma = 0;
printf("PORGRAMA QUE DETERMINA EL PROMEDIO DE LAS EDADES DE 10 PERSONAS\n");
for(i=1; i<=10; i++ ){
printf("\nProporciona la %d edad: ",i);
scanf("%d",&edad);
suma += edad;
printf("\nDame el genero al que pertenece M/H: ");
scanf("%s",&genero);
if(genero == 'M' || genero == 'm'){
mujer += 1;
}
if(genero == 'H' || genero == 'h'){
hombre += 1;
}
}
prom = (suma/10);
printf("\nLa suma de las edades de mujeres y hombres es: %d",suma);
printf("\nEl promedio de las edades es: %.1f",prom);
printf("\nHay %d hombres",hombre);
printf("\nHay %d mujeres",mujer);
getch();
return 0;
}


Título: Re: Float no marca decimales
Publicado por: dariodr01 en 16 Marzo 2019, 04:49 am
Tu mismo codigo con algunas correcciones.
Saludos.

Código
  1. /*Programa que determina al promedio de la edad de 10 personas y te dice
  2. cuantas con mujeres y cuantas son hombres*/
  3. #include<stdio.h>
  4. //#include<conio.h> no uses esta libreria, no es standard
  5.  
  6. int main()
  7. {
  8.    int edad,i,hombre,mujer;
  9.    float prom,suma;
  10.    char genero;
  11.  
  12.    hombre = mujer = suma = 0;
  13.  
  14.    printf("PORGRAMA QUE DETERMINA EL PROMEDIO DE LAS EDADES DE 10 PERSONAS\n");
  15.  
  16.    for(i=1; i<=10; i++ ) {
  17.        printf("\nProporciona la %d edad: ",i);
  18.        scanf("%d",&edad);
  19.  
  20.        suma += edad;
  21.  
  22.        printf("\nDame el genero al que pertenece M/H: ");
  23.        scanf("%s",&genero);
  24.  
  25.        if(genero == 'M' || genero == 'm')
  26.            mujer += 1;
  27.        else if(genero == 'H' || genero == 'h')
  28.            hombre += 1;
  29.    }
  30.    prom = (suma/10);
  31.  
  32.    printf("\nLa suma de las edades de mujeres y hombres es: %.2f",suma);
  33.    printf("\nEl promedio de las edades es: %.1f",prom);
  34.    printf("\nHay %d hombres",hombre);
  35.    printf("\nHay %d mujeres",mujer);
  36.    getchar();
  37.  
  38.    return 0;
  39. }
  40.  
  41.  


Título: Re: Float no marca decimales
Publicado por: EdePC en 16 Marzo 2019, 05:23 am
Saludos,

- Básicamente si operas dos números enteros, te devuelve otro número entero, luego este se guarda en tu variable tipo float pero la parte decimal ya se perdió en la operación.

- Tendrías que convertir explícitamente un operando a float para que devuelva un float:

prom = sum / 10.0

- También puedes hacer las correcciones que indica dariodr01, solo asegúrate de formatear la salida a entero de "suma" como ya lo tenías hecho.