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 é
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.