Escreva um algoritmo que leia uma massa de dados contendo SEXO (Masculino ou Feminino), IDADE e ESTADO CIVIL (Casado, Solteiro, Viúvo, Divorciado ou Outros) de um grupo de N pessoas e determine:
a. A média de idade das mulheres;
b. A viúva mais nova e o solteiro mais velho; e
c. O estado civil de maior e menor ocorrência.

Passo 1

O enunciado pede um algoritmo que, dado um conjunto de N pessoas com atributos SEXO, IDADE e ESTADO CIVIL, calcule: a) média de idade das mulheres; b) a viúva mais nova e o solteiro mais velho; c) o estado civil com maior e menor ocorrência. Vamos usar laço de repetição para ler os dados, condicionais para filtrar e variáveis acumuladoras e de comparação para construir os resultados.

Passo 2

Definimos as seguintes variáveis antes do laço: uma soma de idades de mulheres (sumAgeWomen) e um contador delas (countWomen); a idade da viúva mais nova (youngestWidowAge) iniciada em valor muito alto; a idade do solteiro mais velho (oldestSingleAge) iniciada em valor muito baixo; um dicionário counts para contar ocorrências de cada estado civil (Casado, Solteiro, Viúvo, Divorciado, Outros).
Inicializamos: sumAgeWomen←0, countWomen←0; youngestWidowAge←∞; oldestSingleAge←−∞; para cada chave em counts, counts[chave]←0.

Passo 3

Fazemos um laço de i de 1 até N. Em cada iteração, lemos sexo, idade e estadoCivil. Se sexo=”Feminino”, somamos idade em sumAgeWomen e incrementamos countWomen. Se estadoCivil=”Viúvo” e idade<youngestWidowAge, atualizamos youngestWidowAge. Se estadoCivil=”Solteiro” e idade>oldestSingleAge, atualizamos oldestSingleAge. Em todos os casos, incrementamos counts[estadoCivil].

Passo 4

Após o laço, se countWomen>0 calculamos mediaAgeWomen←sumAgeWomen/countWomen; caso contrário, informamos que não há mulheres. Para achar o estado civil de maior ocorrência, selecionamos a chave de counts com valor máximo; para o de menor ocorrência, a chave com valor mínimo.

Passo 5

Finalmente, exibimos: média de idade das mulheres, idade da viúva mais nova, idade do solteiro mais velho, estado civil de maior ocorrência e estado civil de menor ocorrência.

Resposta

Algoritmo EstatisticasPessoas
Ler N
sumAgeWomen ← 0
countWomen ← 0
youngestWidowAge ← +infinito
oldestSingleAge ← -infinito
counts ← {“Casado”:0, “Solteiro”:0, “Viúvo”:0, “Divorciado”:0, “Outros”:0}
Para i de 1 até N faça
Ler sexo, idade, estadoCivil
Se sexo = “Feminino” então
sumAgeWomen ← sumAgeWomen + idade
countWomen ← countWomen + 1
FimSe
Se estadoCivil = “Viúvo” e idade < youngestWidowAge então
youngestWidowAge ← idade
FimSe
Se estadoCivil = “Solteiro” e idade > oldestSingleAge então
oldestSingleAge ← idade
FimSe
counts[estadoCivil] ← counts[estadoCivil] + 1
FimPara
Se countWomen > 0 então
mediaAgeWomen ← sumAgeWomen / countWomen
Senão
mediaAgeWomen ← 0 // ou mensagem de não há mulheres
FimSe
// Encontrar estado civil de maior e menor ocorrência
estadoMaior ← chave de counts com valor máximo
estadoMenor ← chave de counts com valor mínimo
Escrever "Média de idade das mulheres: ", mediaAgeWomen
Escrever "Idade da viúva mais nova: ", youngestWidowAge
Escrever "Idade do solteiro mais velho: ", oldestSingleAge
Escrever "Estado civil de maior ocorrência: ", estadoMaior
Escrever "Estado civil de menor ocorrência: ", estadoMenor
FimAlgoritmo

Exercícios relacionados