Float no marca decimales

Iniciado por Vale_JCH, 16 Marzo 2019, 01:51 AM

0 Miembros y 1 Visitante están viendo este tema.

Vale_JCH

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:
/*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;
}

dariodr01

Tu mismo codigo con algunas correcciones.
Saludos.

/*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> no uses esta libreria, no es standard

int main()
{
    int edad,i,hombre,mujer;
    float prom,suma;
    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;
        else if(genero == 'H' || genero == 'h')
            hombre += 1;
    }
    prom = (suma/10);

    printf("\nLa suma de las edades de mujeres y hombres es: %.2f",suma);
    printf("\nEl promedio de las edades es: %.1f",prom);
    printf("\nHay %d hombres",hombre);
    printf("\nHay %d mujeres",mujer);
    getchar();

    return 0;
}


EdePC

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.