(1) Desenvolva um programa que defina um registro chamado Pessoa, contendo os seguintes campos: nome, idade, peso (em quilogramas) e altura (em metros). O programa deve calcular o Índice de Massa Corporal (IMC) da pessoa e classificar o resultado em uma das faixas de IMC predefinidas. Imprima o nome da pessoa, seu IMC e em qual faixa do IMC ela se encontra conforme apresentado no exemplo.
Até 6 anos:
Acima de 60 anos:
Menor que 18,5 = Abaixo do peso
• Menor que
Abaixo do peso
Entre 18,5 e
Peso ideal
- Entre 22 e
Peso ideal
- Entre 25 e
Sobrepeso
- Entre 27 e
Sobrepeso
- Acima de
Obesidade
- Acima de
Obesidade
Exemplo 1: Exemplo de entrada:
Entre com os dados da Pessoa:
Digite o nome: Maria
Digite a idade: 29
Digite o peso (em quilogramas): 65
Digite a altura (em metros): 1.58
Exemplo de saída:
Maria possui o
e está em Sobrepeso.
Exemplo 2: Exemplo de entrada:
Entre com os dados da Pessoa:
Digite o nome: José
Digite a idade: 64
Digite o peso (em quilogramas): 72
Digite a altura (em metros): 1.88
Exemplo de saída:
José possui o
e está em Abaixo do peso.
Até 6 anos: | Acima de 60 anos: |
|
• Menor que
|
|
- Entre 22 e
|
- Entre 25 e
|
- Entre 27 e
|
- Acima de
|
- Acima de
|
Digite o nome: Maria
Digite a idade: 29
Digite o peso (em quilogramas): 65
Digite a altura (em metros): 1.58
Digite o nome: José
Digite a idade: 64
Digite o peso (em quilogramas): 72
Digite a altura (em metros): 1.88
Passo 1
Beleza, o enunciado pede pra gente criar um “registro” (em C a gente usa
struct
) chamado Pessoa, com campos nome, idade, peso e altura. Depois, o programa deve ler esses dados, calcular o IMC usando a fórmulae, com base na idade, classificar o resultado em faixas diferentes (até 60 anos e acima de 60). Por fim, imprime o nome, o IMC com duas casas decimais e a classificação.
Pra resolver isso, vamos precisar de:
• Struct em C pra agrupar os campos.
•
• Operações matemáticas simples pra calcular o IMC.
• Estruturas de decisão (
Pra resolver isso, vamos precisar de:
• Struct em C pra agrupar os campos.
•
scanf
/printf
pra entrada e saída.• Operações matemáticas simples pra calcular o IMC.
• Estruturas de decisão (
if
/else
) pra classificar o IMC.Passo 2
Definindo o struct Pessoa. Em C, um
struct
é um jeito de juntar vários dados em um só objeto. Aqui a gente quer algo assim:struct Pessoa {
char nome[50]; // guarda o nome como string
int idade; // guarda a idade
float peso; // guarda o peso em kg
float altura; // guarda a altura em m
};
Isso cria um tipo “Pessoa” que já traz nome, idade, peso e altura juntinhos.
Passo 3
Lendo os dados do usuário. Em C, a gente usa
printf
pra mostrar mensagem e scanf
pra ler o que o usuário digita. Por exemplo:printf("Digite o nome: ");
scanf("%49s", p.nome); // %s lê string (até espaço) e 49 limita pra não estourar
printf("Digite a idade: ");
scanf("%d", &p.idade); // %d lê inteiro
printf("Digite o peso (em kg): ");
scanf("%f", &p.peso); // %f lê float
printf("Digite a altura (em m): ");
scanf("%f", &p.altura); // %f lê float
Passo 4
Calculando o IMC. A fórmula, como já vimos, é
Em código C, fica assim:
float imc = p.peso / (p.altura * p.altura);
Aqui a gente faz
p.altura * p.altura
pra elevar ao quadrado.Passo 5
Classificando o IMC. Como a faixa muda se a pessoa tem até 60 anos ou mais, a gente faz um
if
aninhado:char *faixa;
if (p.idade <= 60) {
if (imc < 18.5f) faixa = "Abaixo do peso";
else if (imc < 25.0f) faixa = "Peso ideal";
else if (imc < 30.0f) faixa = "Sobrepeso";
else faixa = "Obesidade";
} else {
if (imc < 22.0f) faixa = "Abaixo do peso";
else if (imc < 27.0f) faixa = "Peso ideal";
else if (imc < 30.0f) faixa = "Sobrepeso";
else faixa = "Obesidade";
}
Passo 6
Mostrando o resultado. A gente quer algo no formato:
Nome possui o IMC=xx.xx e está em <faixa>.
Em C:
Nome possui o IMC=xx.xx e está em <faixa>.
Em C:
printf("%s possui o IMC=%.2f e está em %s.\n", p.nome, imc, faixa);
O
%.2f
formata o float com duas casas decimais.Resposta
#include <stdio.h>
struct Pessoa {
char nome[50];
int idade;
float peso;
float altura;
};
int main() {
struct Pessoa p;
// Entrada de dados
printf("Entre com os dados da Pessoa:\n");
printf("Digite o nome: ");
scanf("%49s", p.nome);
printf("Digite a idade: ");
scanf("%d", &p.idade);
printf("Digite o peso (em quilogramas): ");
scanf("%f", &p.peso);
printf("Digite a altura (em metros): ");
scanf("%f", &p.altura);
// Cálculo do IMC: IMC = peso / (altura^2)
float imc = p.peso / (p.altura * p.altura);
// Classificação do IMC de acordo com a idade
char *faixa;
if (p.idade <= 60) {
if (imc < 18.5f) faixa = "Abaixo do peso";
else if (imc < 25.0f) faixa = "Peso ideal";
else if (imc < 30.0f) faixa = "Sobrepeso";
else faixa = "Obesidade";
} else {
if (imc < 22.0f) faixa = "Abaixo do peso";
else if (imc < 27.0f) faixa = "Peso ideal";
else if (imc < 30.0f) faixa = "Sobrepeso";
else faixa = "Obesidade";
}
// Saída
printf("%s possui o IMC=%.2f e está em %s.\n", p.nome, imc, faixa);
return 0;
}