GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Como dizer a maior e a menor altura de um grupo de pessoas dentro de um laço WHILE


#1

Olá boa noite, o professor do meu curso, passou um exercício.

1-Receba a altura e peso de um determinado grupo de pessoas(feito)
2-Diga a média de ambos(feito)
3-Diga a maior e menor altura (dúvida está aqui)

segue o código abaixo q estou usando : }

public class Main {

public static void main(String[] args) {

    Scanner input = new Scanner(System.in);

    System.out.println("Quantos usuários irão participar ?");
    int user = input.nextInt();
    double alt;
    double ps;
    double totalAT = 0;
    double totalPS = 0;
    int i = 0;

    while (i < user) {
        System.out.println(+(i + 1) + "º Usuário, digite sua altura e consecutivamente seu peso:");
        System.out.print("Altura: ");
        alt = input.nextDouble();
        System.out.print("Peso: ");
        ps = input.nextDouble();

        totalAT += alt;

        totalPS += ps;

        i++;

        if (user == i)
            break;
    }

    double mediaAT = totalAT / user;
    double mediaPS = totalPS / user;

    System.out.println("A média de altura é: " + mediaAT + " Metros.");
    System.out.println("A média de peso é: " + mediaPS + " Kg.");

#2

Fico travado, quando tenho que comparar as alturas, e dizer qual é a menor e maior dentre elas, pelo simples fato de que, a cada loop do laço while, a váriavel citada em (alt = input.nextdouble() ), simplesmente deixa de existir, e é assumida pela ultima váriavel digitada pelo usuário.


#3

Tem alguns jeitos de fazer isso. O mais simples seria rodar toda a lista vendo se a pessoa da vez é maior que a atual maior, ou menor que a atual. Um mais complicado creio que seria usando map, mas como não estudei eles, não posso afirmar nada.


#4

como assim, querido, n compreendi… da um exemplo em codigos, se possivel


#5

vamos la

como vc acha a maior altura?

vc pega a primeira altura e guarda numa variável (digamos maiorAltura) declarada fora do while.

na segunda altura em diante vc checa que altura digitada é maior que a maiorAltura. se for, vc substitui o valor dessa variável com o valor atual.

serve pra qualquer quantidade, desde que vc faça as comparações corretas


#6

mas a maior altura , vai ser sempre a declarada pelo usuário, dentro do while…é apartir daí q n consigo proceder.


#7

Como vc sabe que vc esta na primeira iteração? Pelo valor da sua variavel indexada, certo?

int maior;
int i = 0;
while(i < max){
 int altura = ...
 If (i==0) { maior = altura; } else if ...
 i++;
}

#8

Por ser novo, continuo com mtas dificuldades, mas vou qbrar a cabeça aqui. obg.