Escreva um algoritmo que cadastre o nome, a altura, o peso, o CPF e sexo de 2 pessoas. Com os dados cadastrados, localize as pessoas através do seu CPF para mostrar na tela seus dados, inclusive o valor de seu IMC (Índice de Massa Corporal). Utilize vetor de registro na sua solução. O cálculo do IMC deve ser feito por uma função ou procedimento.
IMC = peso / (altura^2)

Passo 1

O enunciado pede um algoritmo que armazene nome, altura, peso, CPF e sexo de duas pessoas usando um vetor de registro, e depois, dado um CPF, exiba todos esses dados mais o valor do IMC. O conteúdo envolvido é: definição de registro (tipo composto), vetor de registros, leitura/armazenamento de dados, função para cálculo de IMC e busca sequencial por CPF. A fórmula do IMC é
\text{IMC} = \frac{\text{peso}}{(\text{altura})^2}

Passo 2

Definimos o tipo de dado Pessoa e o vetor para armazenar duas instâncias:
type
  Pessoa \(=\) record
    nome   : string;
    altura : real;
    peso   : real;
    cpf    : string;
    sexo   : char;
  end;

var
  pessoas : array[\(1\)..\(2\)] of Pessoa;
  i       : integer;

Passo 3

Fazemos a leitura dos dados de cada pessoa em um laço que percorre o vetor:
for i :\(=1\) to \(2\) do
begin
  writeln('Cadastro da pessoa ', i);
  write('  Nome: ');
  readln(pessoas[i].nome);
  write('  Altura (m): ');
  readln(pessoas[i].altura);
  write('  Peso (kg): ');
  readln(pessoas[i].peso);
  write('  CPF: ');
  readln(pessoas[i].cpf);
  write('  Sexo (M/F): ');
  readln(pessoas[i].sexo);
  writeln;
end;

Passo 4

Criamos uma função para calcular o IMC, que aplica a fórmula
function CalcularIMC(p: Pessoa): real;
begin
  CalcularIMC :\(=\) p.peso / (p.altura * p.altura);
end;

Passo 5

Implementamos a busca sequencial pelo CPF digitado e, se encontrado, exibimos os dados da pessoa e o IMC formatado com duas casas decimais. Caso contrário, informamos que o CPF não foi encontrado:
var
  cpfBusca   : string;
  encontrado : boolean;
begin
  write('Informe o CPF para busca: ');
  readln(cpfBusca);
  encontrado :\(=\) false;
  for i :\(=1\) to \(2\) do
  begin
    if pessoas[i].cpf \(=\) cpfBusca then
    begin
      writeln('--- Dados encontrados ---');
      writeln('Nome: ', pessoas[i].nome);
      writeln('Altura: ', pessoas[i].altura:\(0\):\(2\), ' m');
      writeln('Peso: ', pessoas[i].peso:\(0\):\(2\), ' kg');
      writeln('Sexo: ', pessoas[i].sexo);
      writeln('IMC: ', CalcularIMC(pessoas[i]):\(0\):\(2\));
      encontrado :\(=\) true;
      break;
    end;
  end;
  if not encontrado then
    writeln('CPF não encontrado.');
end;

Resposta

O algoritmo completo em pseudocódigo Pascal fica:
program CadastroIMC;
type
  Pessoa \(=\) record
    nome   : string;
    altura : real;
    peso   : real;
    cpf    : string;
    sexo   : char;
  end;
var
  pessoas    : array[\(1\)..\(2\)] of Pessoa;
  i          : integer;
  cpfBusca   : string;
  encontrado : boolean;

function CalcularIMC(p: Pessoa): real;
begin
  CalcularIMC :\(=\) p.peso / (p.altura * p.altura);
end;

begin
  for i :\(=1\) to \(2\) do
  begin
    writeln('Cadastro da pessoa ', i);
    write('  Nome: ');    readln(pessoas[i].nome);
    write('  Altura (m): '); readln(pessoas[i].altura);
    write('  Peso (kg): ');   readln(pessoas[i].peso);
    write('  CPF: ');        readln(pessoas[i].cpf);
    write('  Sexo (M/F): '); readln(pessoas[i].sexo);
    writeln;
  end;

  write('Informe o CPF para busca: ');
  readln(cpfBusca);
  encontrado :\(=\) false;
  for i :\(=1\) to \(2\) do
    if pessoas[i].cpf \(=\) cpfBusca then
    begin
      writeln('--- Dados encontrados ---');
      writeln('Nome: ', pessoas[i].nome);
      writeln('Altura: ', pessoas[i].altura:\(0\):\(2\), ' m');
      writeln('Peso: ', pessoas[i].peso:\(0\):\(2\), ' kg');
      writeln('Sexo: ', pessoas[i].sexo);
      writeln('IMC: ', CalcularIMC(pessoas[i]):\(0\):\(2\));
      encontrado :\(=\) true;
      break;
    end;

  if not encontrado then
    writeln('CPF não encontrado.');
end.

Exercícios relacionados