6-) Escrever um algoritmo que leia um conjunto de X informações (Número deverá ser definido pelo usuário) contendo, cada uma delas, a altura e o sexo de uma pessoa (código =1, masculino código =2, feminino), calcule e mostre o seguinte:
a) a maior e a menor altura da turma
b) a média da altura das mulheres
c) a média da altura da turma.
(Utilizar a estrutura WHILE).

Passo 1

O enunciado pede que eu escreva um algoritmo que leia um conjunto de \;X\; informações (o valor de \;X\; é fornecido pelo usuário). Cada informação corresponde à altura e ao sexo de uma pessoa, onde o sexo é codificado como \;1\; para masculino e \;2\; para feminino. A partir desses dados o algoritmo deve calcular e mostrar:
a) a maior e a menor altura da turma;
b) a média da altura das mulheres;
c) a média da altura da turma.
Também é obrigatório usar a estrutura \text{WHILE} para ler/processar as \;X\; pessoas.
Informações dadas que vou usar:
  • O número de pessoas a ler é \;X\; (definido pelo usuário).
  • Para cada pessoa leio a sua \;altura\; e o \;sexo\; (código \;1 = masculino, \;2 = feminino).
O que preciso produzir ao final:
  • Valor da maior altura;
  • Valor da menor altura;
  • Média das alturas das mulheres (se existir pelo menos uma mulher);
  • Média das alturas de toda a turma (se \;X>0\;).

Passo 2

Visão geral do método (sem resolver ainda): vou percorrer as \;X\; pessoas uma a uma, acumulando somas e contagens e atualizando o maior e o menor valor conforme aparecem alturas. Para percorrer repetidamente vou usar um contador \;i\; e uma estrutura \text{WHILE} que executa enquanto \;i \le X\;. A cada iteração leio \;altura\; e \;sexo\; e atualizo as variáveis auxiliares que guardam soma, contagem, maior e menor. No final calculo as médias com as fórmulas apropriadas.
Explicação rápida das fórmulas que vou usar:
  • Soma de alturas das mulheres: \;S_{mulheres} = \sum altura\_das\_mulheres\;.
  • Contagem de mulheres: \;C_{mulheres}\;.
  • Média das mulheres (quando \;C_{mulheres}>0\;): \;\text{media\_mulheres} = \dfrac{S_{mulheres}}{C_{mulheres}}\;.
  • Soma total de alturas: \;S_{total}\;.
  • Média da turma (quando \;X>0\;): \;\text{media\_turma} = \dfrac{S_{total}}{X}\;.

Passo 3

Definição e propósito das variáveis que vou usar (explicando cada uma):
  • \;X\;: número total de pessoas que o usuário informou que vai inserir.
  • \;i\;: contador de iterações, será iniciado em \;1\; e incrementado até \;X\;. Serve para controlar o \text{WHILE}.
  • \;altura\;: valor lido a cada iteração (um número real positivo).
  • \;sexo\;: código lido a cada iteração (inteiro: \;1 ou \;2).
  • \;maior\;: armazena a maior altura encontrada até o momento.
  • \;menor\;: armazena a menor altura encontrada até o momento.
  • \;S_{total}\;: soma acumulada de todas as alturas (para média da turma).
  • \;S_{mulheres}\;: soma acumulada das alturas das mulheres (para média das mulheres).
  • \;C_{mulheres}\;: contador de quantas mulheres foram lidas.
Observação sobre inicialização do \;maior\; e \;menor\;: uma técnica estável é tratar a primeira pessoa lida como caso especial — ao ler a primeira altura eu atribuo simultaneamente \;maior = menor = altura\;. Isso evita problemas com “valores iniciais infinitos”. Vou usar essa técnica porque é simples e segura para fazer na prova.

Passo 4

Detalhamento passo a passo do que acontece em cada iteração do \text{WHILE} (explicando a lógica com calma):
  1. Antes do loop, peço ao usuário o valor de \;X\;. Se \;X \le 0\; não há dados a processar; nesse caso o algoritmo pode informar que não há pessoas e terminar.
  2. Inicio \;i = 1, \;S_{total} = 0, \;S_{mulheres} = 0, \;C_{mulheres} = 0.
  3. Entro no \text{WHILE} com condição \;i \le X\;. Em cada iteração:
    • Leio \;altura\; e \;sexo\;.
    • Se \;i = 1\; (primeira pessoa), atribuo \;maior = altura\; e \;menor = altura\; (inicialização do máximo e mínimo).
    • Se \;i > 1\;, comparo \;altura\; com \;maior\; e \;menor\; e atualizo:
      • Se \;altura > maior\; então faço \;maior \leftarrow altura\;.
      • Se \;altura < menor\; então faço \;menor \leftarrow altura\;.
    • Acrescento \;altura\; a \;S_{total}: faço \;S_{total} \leftarrow S_{total} + altura\;.
    • Se \;sexo = 2\; (feminino), faço \;S_{mulheres} \leftarrow S_{mulheres} + altura\; e \;C_{mulheres} \leftarrow C_{mulheres} + 1\;.
    • Incremento \;i \leftarrow i + 1\; para passar à próxima pessoa.
  4. Repito até \;i > X\;. Ao sair do loop tenho \;maior, \;menor, \;S_{total}, \;S_{mulheres} e \;C_{mulheres} prontos.
Observações sobre validação de entrada:
  • Se o sexo vier diferente de \;1 ou \;2\; o algoritmo pode pedir para o usuário digitar novamente. Para manter o algoritmo simples em prova, pode-se assumir entradas válidas; se preferir, incluir um pequeno laço que repete a leitura do \;sexo\; até que seja \;1 ou \;2.

Passo 5

Como calcular as médias e tratar casos especiais (explicando as fórmulas e as proteções contra divisão por zero):
  • Média da turma (quando \;X>0\;): \;\text{media\_turma} = \dfrac{S_{total}}{X}\;.
    Explicação: soma de todas as alturas dividida pela quantidade total de pessoas.
  • Média das mulheres: somente calcula se \;C_{mulheres} > 0\;. Fórmula: \;\text{media\_mulheres} = \dfrac{S_{mulheres}}{C_{mulheres}}\;.
    Se \;C_{mulheres} = 0\; (nenhuma mulher na amostra) não podemos dividir por zero; então o algoritmo deve exibir uma mensagem do tipo “Não há mulheres para calcular a média” ou definir a média como indefinida.
Importante lembrar na prova: sempre verificar se o denominador é diferente de zero antes de dividir — isso evita erro e é esperado em enunciados desse tipo.

Passo 6

Exemplo numérico pequeno (para fixar o raciocínio):
Suponha \;X=3\; com entradas (altura, sexo):
  1. \;(1{,}70,\;2) — mulher
  2. \;(1{,}85,\;1) — homem
  3. \;(1{,}60,\;2) — mulher
Processamento:
  • Após 1ª pessoa: \;maior = menor = 1{,}70;; S_{total}=1{,}70;; S_{mulheres}=1{,}70;; C_{mulheres}=1.
  • Após 2ª pessoa: \;maior = 1{,}85, menor = 1{,}70;; S_{total}=3{,}55;; S_{mulheres}=1{,}70;; C_{mulheres}=1.
  • Após 3ª pessoa: \;maior = 1{,}85, menor = 1{,}60;; S_{total}=5{,}15;; S_{mulheres}=3{,}30;; C_{mulheres}=2.
    Cálculos finais:
  • \;\text{media\_turma} = \dfrac{5{,}15}{3} \approx 1{,}7167.
  • \;\text{media\_mulheres} = \dfrac{3{,}30}{2} = 1{,}65.
  • Maior = \;1{,}85, menor = \;1{,}60.
Esse exemplo mostra passo a passo como as variáveis evoluem — na prova você faria as mesmas operações em escala maior.

Passo 7

Agora apresento o pseudocódigo completo e claro que implementa tudo usando \text{WHILE}. Esse bloco é o que você pode copiar/implementar ou escrever na prova (está em português estruturado):
Leia o número de pessoas X
Se X \le 0 então
\quad mostrar “Não há pessoas para processar.”
\quad terminar
Fim se
i \leftarrow 1
S_{total} \leftarrow 0
S_{mulheres} \leftarrow 0
C_{mulheres} \leftarrow 0
Enquanto i \le X faça
\quad Ler altura
\quad Ler sexo (assume-se sexo=1 ou sexo=2)
\quad Se i = 1 então
\quad\quad maior \leftarrow altura
\quad\quad menor \leftarrow altura
\quad Senão
\quad\quad Se altura > maior então maior \leftarrow altura
\quad\quad Se altura < menor então menor \leftarrow altura
\quad Fim Se
\quad S_{total} \leftarrow S_{total} + altura
\quad Se sexo = 2 então
\quad\quad S_{mulheres} \leftarrow S_{mulheres} + altura
\quad\quad C_{mulheres} \leftarrow C_{mulheres} + 1
\quad Fim Se
\quad i \leftarrow i + 1
Fim Enquanto
Mostrar "Maior altura = ", maior
Mostrar "Menor altura = ", menor
Se C_{mulheres} > 0 então
\quad \text{media\_mulheres} \leftarrow \dfrac{S_{mulheres}}{C_{mulheres}}
\quad Mostrar "Média das mulheres = ", \text{media\_mulheres}
Senão
\quad Mostrar “Não há mulheres para calcular a média.”
Fim Se
Se X > 0 então
\quad \text{media\_turma} \leftarrow \dfrac{S_{total}}{X}
\quad Mostrar "Média da turma = ", \text{media\_turma}
Fim Se

Resposta

Leia X
Se X \le 0 então mostrar “Não há pessoas para processar.” e terminar
i \leftarrow 1
S_{total} \leftarrow 0
S_{mulheres} \leftarrow 0
C_{mulheres} \leftarrow 0
Enquanto i \le X faça
\quad Ler altura
\quad Ler sexo
\quad Se i = 1 então
\quad\quad maior \leftarrow altura
\quad\quad menor \leftarrow altura
\quad Senão
\quad\quad Se altura > maior então maior \leftarrow altura
\quad\quad Se altura < menor então menor \leftarrow altura
\quad Fim Se
\quad S_{total} \leftarrow S_{total} + altura
\quad Se sexo = 2 então
\quad\quad S_{mulheres} \leftarrow S_{mulheres} + altura
\quad\quad C_{mulheres} \leftarrow C_{mulheres} + 1
\quad Fim Se
\quad i \leftarrow i + 1
Fim Enquanto
Mostrar "Maior altura = ", maior
Mostrar "Menor altura = ", menor
Se C_{mulheres} > 0 então
\quad \text{media\_mulheres} \leftarrow \dfrac{S_{mulheres}}{C_{mulheres}}
\quad Mostrar "Média das mulheres = ", \text{media\_mulheres}
Senão
\quad Mostrar “Não há mulheres para calcular a média.”
Fim Se
\text{media\_turma} \leftarrow \dfrac{S_{total}}{X}
Mostrar "Média da turma = ", \text{media\_turma}

Exercícios relacionados