Calculadora da frequência cardíaca. Enquanto estiver se exercitando, você pode usar um monitor de frequência cardíaca para ver se sua taxa de batimentos está dentro de uma faixa segura, sugerida por seus treinadores e médicos. De acordo com a American Heart Association
(AHA) (
a frequência cardíaca máxima em batimentos por minuto é 220 menos sua idade em anos. Sua frequência cardíaca ideal está em uma faixa entre 50-85 por cento da sua frequência máxima. [Nota: essas fórmulas são estimativas fornecidas pela AHA. As frequências cardíacas máxima e ideal podem variar com base na saúde, condição física e sexo do indivíduo. Consulte sempre
um médico ou um profissional de saúde qualificado antes de iniciar ou modificar um programa de exercícios.] Crie uma classe chamada FrequenciaCardiaca. Os atributos da classe deverão incluir o primeiro nome, o sobrenome e data de nascimento da pessoa (essa última
deve ter atributos separados para dia, mês e ano). Sua classe deverá ter um construtor que receba esses dados como parâmetros. Para cada atributo, forneça funções set e get. A classe também deverá incluir uma função obterIdade que calcule e retorne a idade da pessoa
(em anos), uma função obterFrequenciaMaxima que calcule e retorne a frequência cardíaca máxima da pessoa e uma função obterFrequenciaIdeal, que calcule e retorne a frequência cardíaca ideal da pessoa. Como você ainda não sabe como obter a data atual do computador,
a função obterIdade deve pedir que o usuário digite o dia, o mês e o ano atuais antes de calcular a idade da pessoa. Escreva uma aplicação que peça a informação da pessoa, instancie um objeto da classe Frequencias-Cardiacas e imprima a informação desse objeto — incluindo
nome, sobrenome e data de nascimento —, e depois calcule e imprima a idade da pessoa (em anos), sua frequência cardíaca máxima e sua frequência cardíaca ideal.
Passo 1
Vamos explicar detalhadamente a criação da classe HeartRates e criar uma função principal que testará as funcionalidades da classe.
Usaremos a classe Date do exercício anterior como o membro de dados desta classe.
O arquivo de cabeçalho "HeartRates.h":
#include string>
#include "Date.h"
using namespace std;
class HeartRates {
public:
HeartRates(const string &firstName,
const string &lastName,
const Date &dateOfBirth);
const string &getFirstName() const;
void setFirstName(const string &firstName);
const string &getLastName() const;
void setLastName(const string &lastName);
const Date &getDateOfBirth() const;
void setDateOfBirth(const Date &dateOfBirth);
int getAge() const;
int getMaxiumumHeartRate(int age) const;
int getTargetHeartRate(int age) const;
private:
string firstName;
string lastName;
Date dateOfBirth;
};
Agora, vamos definir a classe no arquivo fonte "HeartRates.cpp".
A definição do construtor:
#include iostream>
#include "HeartRates.h"
using namespace std;
HeartRates::HeartRates(const string &firstName,
const string &lastName,
const Date &dateOfBirth)
: firstName(firstName), lastName(lastName),
dateOfBirth(dateOfBirth) {}
Passo 2
Definições da função getter:
const string &HeartRates::getFirstName() const
{
return firstName;
}
const string &HeartRates::getLastName() const
{
return lastName;
}
const Date &HeartRates::getDateOfBirth() const
{
return dateOfBirth;
}
Definições da função setter:
void HeartRates::setFirstName(const string &firstName)
{
HeartRates::firstName = firstName;
}
void HeartRates::setLastName(const string &lastName)
{
HeartRates::lastName = lastName;
}
void HeartRates::setDateOfBirth(const Date &dateOfBirth)
{
HeartRates::dateOfBirth = dateOfBirth;
}
A função getAge() solicitará que o usuário insira a data atual e calcule a idade da pessoa usando esses valores da seguinte forma:
int HeartRates::getAge() const
{
int month, day, year;
cout Enter the current date: ";
cin >> month >> day >> year;
int age = year - dateOfBirth.getYear() - 1;
if (month - dateOfBirth.getMonth() == 0 &&
day - dateOfBirth.getDay() >= 0 ||
month - dateOfBirth.getMonth() > 0)
age++;
return age == -1 ? 0 : age;
}
Passo 3
Para calcular a frequência cardíaca máxima, usaremos a fórmula indicada pela tarefa:
int HeartRates::getMaxiumumHeartRate(int age) const
{
return 220 - age;
}
Como a tarefa nos pede para retornar a frequência cardíaca alvo, mas nos dá o intervalo onde a frequência cardíaca alvo deveria estar, vamos calcular a mediana:
int HeartRates::getTargetHeartRate(int age) const
{
int maximumHeartRate = getMaxiumumHeartRate(age);
double low = maximumHeartRate * 0.5;
double high = maximumHeartRate * 0.85;
return (int)((low + high) / 2);
}
O cabeçalho do programa:
#include iostream>
#include "HeartRates.h"
using namespace std;
A função que solicitará que o usuário insira informações sobre uma pessoa e retorne um objeto HeartRates:
HeartRates getHeartRates()
{
string firstName, lastName;
cout first and last name: ";
cin >> firstName >> lastName;
int month, day, year;
cout Enter birth of date: ";
cin >> month >> day >> year;
return HeartRates(firstName, lastName,
Date(month, day, year));
}
Na função main, vamos calcular as informações que precisamos exibir e produzi-las:
int main()
{
HeartRates person = getHeartRates();
int age = person.getAge();
int maximumHeartRate
= person.getMaxiumumHeartRate(age);
int targetHeartRate = person.getTargetHeartRate(age);
cout endl
Maximum heart rate: "
maximumHeartRate endl
heart rate: "
targetHeartRate endl;
return 0;
}
Resposta
Ver desenvolvimento.