how do I print the smallest height read? [duplicate]

-2
int sexo = 1;
float maior=0,menor=0,altura;
int tm = 0, tf = 0, sm = 0, sf =0; 
printf ("O valor 0 encera o programa !!!\n");
    while (sexo!=0){
        printf ("1-Masculino\t2-Feminino\n");
        scanf ("%d", &sexo);
        if (sexo == 1)
        {tm++;
        printf ("altura do Homen: \n");
        scanf ("%f", &altura);}

        if (sexo == 2)
        {tf++;
        printf ("Altura da Mulher: \n");
        scanf ("%f", &altura);}

        if (altura>maior){
        maior=altura;}

        if (altura!=0&&altura<menor){
        menor=altura;}
    }
printf ("Menor altura e: %f\n",menor);
printf ("Maior altura : %f\n",maior);
printf ("Numero total de Homens: %d\n",tm);
printf ("Numero total de Mulheres: %d\n",tf);}
    
asked by anonymous 07.12.2018 / 00:35

2 answers

1

Unless you consider a smaller value with a very large number at startup, which may not be a good idea for some cases, the best thing is to start the variable for less height with the first height that the program receives case its value is same as the initial value (which I considered 0):

#include<stdio.h>

int main(void){

    float altura;
    float maior_altura=0;
    float menor_altura=0;

    int sexo;
    int total_feminino=0;
    int total_masculino=0;

    printf ("Digite '0' para encerrar o programa.\n");

    while ( 1 ) {
        printf ("'1' para Masculino\n'2' para Feminino\n");
        scanf ("%d", &sexo);

        if ( sexo==0 ){
            // sai do laço
            break;
        } else {
            // pega altura
            printf ("Altura: \n");
            scanf ("%f", &altura);

            // processa as entradas
            if ( sexo==1 ){
                total_masculino++;
            } else {
                if ( sexo==2 ){
                    total_feminino++;
                }
            }

            // força a inicialização do menor valor
            if ( menor_altura==0 ){
                menor_altura=altura;
            }

            if ( altura>maior_altura ){
                maior_altura=altura;
            }

            if ( altura<menor_altura ){
                menor_altura=altura;
            }
        }

    }

    printf ("Maior altura registrada = %f\n", maior_altura);
    printf ("Menor altura registrada = %f\n", menor_altura);
    printf ("Total do sexo feminino = %d\n", total_feminino);
    printf ("Total do sexo masculino = %d\n", total_masculino);

    return 0; 
}

Tip, do not be shy about using explicit names for variables, it's easier to read the code. By the way, taking the same commands that I used, I simplified the entry of the height.

    
07.12.2018 / 01:22
0

Now that I saw that you created another thread ... You can do:

#include <stdio.h>

int main () {
    int sexo = 1;
    float altura, maior = 0, menor;
    int tm = 0, tf = 0, sm = 0, sf =0;   
    int iteracao = 1;

    printf ("O valor 0 encera o programa !!!\n");
    while (sexo!=0) {
        printf ("1-Masculino\t2-Feminino\n");
        scanf ("%d", &sexo);

        if (sexo == 1) {
            tm++;
            printf ("altura do Homen: \n");
            scanf ("%f", &altura);
        }

        if (sexo == 2) {
            tf++;
            printf ("Altura da Mulher: \n");
            scanf ("%f", &altura);
        }

        // Define inicialmente menor como a primeira altura inserida
        if (iteracao == 1) {
            menor = altura
        }

        if (altura < menor) {
            menor = altura
        }

        if (altura > maior) {
            maior = altura;
        }

        iteracao++;

    }
    printf ("Menor altura e: %f\n",menor);
    printf ("Maior altura : %f\n",maior);
    printf ("Numero total de Homens: %d", tm);
    printf ("Numero total de Mulheres: %d", tf);
}

In this case, we must first define the first height as our initial reference. Subsequently we will compare with the values inserted at each iteration.

    
07.12.2018 / 01:01