Division does not generate the expected result

1

When I do the split of mul / total_filhos_mul the variable mul is zeroed, if I do not do this division it gets the correct value.

What could be happening?

#include <stdio.h>
int main(){

    int hab,i=0,hom=0,mul,sal_menor=0,total_filhos_mul,sem_filhos=0,soma_sal=0;
    char sexo;
    printf("informe o numero de habitantes:\n");
    scanf("%d",&hab);

    mul =0;
    hom =0;

    int sal[hab];
    int filhos_mul[hab];

    for(i = 0; i < hab; i++){
        printf("\ninforme o valor do salario:");
        scanf("%d", &sal[i]);
        printf("\nquantidade de filhos:");
        scanf("%d", &sem_filhos);
        if(sal[hab] <= 600 && sem_filhos == 0)
            sal_menor=sal_menor + 1;

            printf("\ninforme o sexo (F/M):");
            scanf("%s", &sexo);
            if(sexo == 'm')
                hom = hom + 1;

                if(sexo == 'f'){
                    mul=mul + 1;
                    printf("\nquantidade de filhos:");
                    scanf("%d", &filhos_mul[i]);
                }

                total_filhos_mul = total_filhos_mul + filhos_mul[i];
                soma_sal = soma_sal + sal[i];

                printf("\n\n\n-------#########################################-------\n\n\n");

    }

    int maior, menor;
    maior = sal[0]; 
    menor = sal[0];

    for (i = 0; i < hab; ++i) {
        if (sal[i] > maior){
            maior = sal[i];
        }
        if (sal[i] < menor){
            menor = sal[i];
        }
    }

    printf("\n%d mulheres", mul/*total_filhos_mul*/);
    printf("\n%d total de filhos", total_filhos_mul);

    float media_sal;
    media_sal = hab / soma_sal;
    printf("\nA media do salario da populacao e: %.2f\n", media_sal);

    float media_filhos;
    media_filhos = mul / total_filhos_mul;
    printf("\nA media de filhos das mulheres e: %.2f\n", media_filhos);

    printf("\nO maior salario e: %d\n", maior);
    printf("\nO menor salario e: %d\n", menor);
}
    
asked by anonymous 09.11.2017 / 16:31

1 answer

2

It's a typing problem. The two variables of the division are integers, so the result is an integer. You need to cast cast to float before doing split.

It was hard to come to this conclusion because the code is barely readable. Declare variables near where it will be used.

I would even improve the code, but I have seen that it has other problems, or at least it is unclear what the algorithm needs to do and a change can result in something more wrong.     

09.11.2017 / 18:27