Função para calcular IMC (índice de massa corporal)
Criação da função que calcula o IMC (Índice de Massa Corporal) através de uma fórmula com base no peso e altura do indivíduo e uso de estruturas condicionais.

Fonte: Shutterstock.
Deseja ouvir este material?
Áudio disponível no material digital.
sem medo de errar
Você foi contratado por um laboratório de pesquisas multidisciplinar que atende a várias empresas. Seu primeiro trabalho é desenvolver uma solução para a equipe de nutrição. Um cliente deseja uma calculadora de IMC (Índice de Massa Corporal). Os nutricionistas lhe passaram a fórmula para calcular o IMC com base no peso e na altura do indivíduo.
Para resolver esse problema você deve ter a fórmula para o cálculo do IMC anotada: IMC = Peso / Altura². Também será preciso criar condicionais para verificar a situação do indivíduo (abaixo do peso, peso ideal ou sobrepeso), com base em seu IMC.
Eis algumas dicas para resolver o problema:
- Crie duas variáveis para armazenar valores reais, pois o peso e a altura certamente não serão inteiros.
- Leia o valor dessas variáveis dentro da função que calcula o IMC.
- Retorne o valor do IMC.
- Na função principal, chame a função que calcula o IMC e guarde seu retorno em uma variável inteira.
- Use uma estrutura condicional (if-else if-else) para identificar e imprimir na tela a situação do indivíduo.
Eis uma possível solução para a situação problema:
#include<stdio.h>
float calcularIMC() {
float peso, altura, imc;
printf("\nInforme seu peso (em Kg): ");
scanf("%f", &peso);
printf("\nInforme sua altura (em metros): ");
scanf("%f", &altura);
imc = peso / (altura * altura);
return imc;
}
int main(){
float imc = calcularIMC();
if (imc < 18.5) printf("\nIMC = %.2f, Situação: Abaixo do peso!", imc);
else if (imc < 24.9) printf("\nIMC = %.2f, Situação: Peso ideal!", imc);
else printf("\nIMC = %.2f, Situação: Sobrepeso!", imc);
}

Agora, você pode testar o código utilizando a ferramenta Paiza.io.
Avançando na prática
Função para gerar senhas
Uma empresa está ingressando no mercado de segurança de dados e você foi contratado para implementar um algoritmo que cria senhas automaticamente para os clientes. A ideia é pedir para o usuário digitar uma frase e, a partir das letras na frase, o algoritmo gerará uma senha aleatória.
O programa para geração de senhas pode ser construído utilizando uma função; além disso, a função rand() também pode ser usada para escolher, aleatoriamente, as letras da frase que serão usadas na senha. Veja no Código 3.7 uma possível solução para o problema.
#include<stdio.h>
#include <stdlib.h>
#include <string.h>
#define TAM_FRASE 100
#define TAM_SENHA 6
char* gerarSenha() {
int maxTamFrase = TAM_FRASE + 1; // precisa considerar o caractere de encerramento da string
int tamSenha = TAM_SENHA + 1; // precisa considerar o caractere de encerramento da string
char strFrase[maxTamFrase];
char* strSenha = (char*) malloc(sizeof(char) * tamSenha);
printf("\nEntre uma frase sem espaços em branco entre as palavras: ");
fflush(stdin);
fgets(strFrase, maxTamFrase, stdin);
int tamFrase = strlen(strFrase); // quantidade de caracteres da frase informada
srand(time(NULL)); // usa uma nova semente para o gerador de números aleatórios (rand)
for(int i = 0; i < TAM_SENHA; i++) {
int nAleatorio = rand() % tamFrase;
strSenha[i] = strFrase[nAleatorio];
}
strSenha[tamSenha] = '\0';
return strSenha;
}
int main(){
char* senha = gerarSenha();
printf("\nSenha gerada: %s", senha);
}

Agora, você pode testar o código utilizando a ferramenta Paiza.io.