How do I print the smallest height ever read?

Asked

Viewed 46 times

-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);}

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 to a lower height with the first height the program receives if its value is even the initial value (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, don’t be ashamed to use explicit names for variables, it’s easier to read the code. By the way, by taking the same commands you used I simplified the height input.

0

Now that I see you’ve 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 need to initially define the first height as our initial frame of reference. Later we will compare with the values inserted at each iteration.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.