Beginner doubt-Loop error

Guys, I'm doing an exercise, but something is giving conflict in this small stretch of the repetition, from to put the first information of the first Loop, but when it passes to the second onwards, it skips the part of the name. I've reversed the order, and I have no idea how to fix it.

insert the description of the image here

/ * Write an algorithm for a program that reads a set of 50 tokens containing each, the name, height and sex of a person. Calculations e print : a) the highest and lowest class height b) the average height of women c) the average class height */

double somaT = 0, mediaM = 0, mediaT = 0, altura, somaM = 0;
double maiorH = 0, menorH = 999, maiorM = 0, menorM = 999;
char nome[30], sexo;                    
int i, mulher, turma;
turma = 0;
mulher = 0;

for (i = 0; i < 5; i++) 
{
    printf ("Digite seu nome: ");
    gets (nome);
    printf ("Digite seu sexo: ");
    sexo = getche();
    printf ("\nDigite sua altura: ");
    scanf ("%lf", &altura);

    if (sexo = 'm') {
            if (altura > maiorH) {
                maiorH = altura;
            }
            if (altura < menorH) {
                menorH = altura;
            }
    }
    if (sexo = 'f') {
        mulher++;
        somaM = somaM + altura;
            if (altura > maiorM) {
                    maiorM = altura;
                }
                if (altura < menorM) {
                    menorM = altura;
                }
    }
    turma++;
    somaT = somaT + altura;
}
mediaM = somaM / mulher;
mediaT = somaT / turma;

if (maiorH > maiorM) {
    printf ("A maior altura da turma eh: %.2lf \n", maiorH);
}
else {
    printf ("A maior altura da turma eh: %.2lf \n", maiorM);
}
if (menorH < menorM) {
    printf ("A menor altura da turma eh: %.2lf \n", menorH);
}
else {
    printf ("A menor altura da turma eh: %.2lf \n", menorM);
}

printf ("A media de altura das mulheres eh: %.2lf \n", mediaM);
printf ("A media de altura da turma eh: %.2lf \n", mediaT);

system ("PAUSE");
Author: Tsr N, 2019-09-04

1 answers

Try to run this way by clearing the keyboard buffer

double somaT = 0, mediaM = 0, mediaT = 0, altura, somaM = 0;
double maiorH = 0, menorH = 999, maiorM = 0, menorM = 999;
char nome[30], sexo;                    
int i, mulher, turma;
turma = 0;
mulher = 0;

for (i = 0; i < 5; i++) 
{
    printf ("Digite seu nome: ");
    fflush(stdin);
    gets (nome);
    printf ("Digite seu sexo: ");
    fflush(stdin);
    sexo = getche();
    printf ("\nDigite sua altura: ");
    fflush(stdin);
    scanf ("%lf", &altura);

    if (sexo = 'm') {
            if (altura > maiorH) {
                maiorH = altura;
            }
            if (altura < menorH) {
                menorH = altura;
            }
    }
    if (sexo = 'f') {
        mulher++;
        somaM = somaM + altura;
            if (altura > maiorM) {
                    maiorM = altura;
                }
                if (altura < menorM) {
                    menorM = altura;
                }
    }
    turma++;
    somaT = somaT + altura;
}
mediaM = somaM / mulher;
mediaT = somaT / turma;

if (maiorH > maiorM) {
    printf ("A maior altura da turma eh: %.2lf \n", maiorH);
}
else {
    printf ("A maior altura da turma eh: %.2lf \n", maiorM);
}
if (menorH < menorM) {
    printf ("A menor altura da turma eh: %.2lf \n", menorH);
}
else {
    printf ("A menor altura da turma eh: %.2lf \n", menorM);
}

printf ("A media de altura das mulheres eh: %.2lf \n", mediaM);
printf ("A media de altura da turma eh: %.2lf \n", mediaT);

system ("PAUSE");
 0
Author: Luan Brito, 2019-09-04 19:29:31