Description
The purpose of this challenge is to use overloaded functions and to use default parameters. This challenge will calculate BMI (Body Mass Index).
Requirements
- Create a function, bool use_metric() to ask the user if metric units will be used. This function returns a true/false value depending on what the user inputs. You can write a cout/cin combination in this function to get the user’s input.
- Create a function, double calc_BMI(double height, double weight, bool is_metric = true). The is_metric parameter must be declared as a default parameter set to true. Return the result of your BMI calculation out of the function.
- BMI is calculated as:
In metric, (mass in kg) / (height in m)2
- Write two overloaded functions to converts units
// the value parameter represents a height or a weight value // these functions convert imperial values to metric // use values for unit_type of 1 = length and 2 = weight double convert_units(double value); // always LENGTH conversion double convert_units(double value, int unit_type); LENGTH or WEIGHT conversion // sample calls height = convert_units(height); // convert height to metric weight = convert_units(weight, 2); // convert weight to metric
The calc_BMI() function will call convert_units() to ensure that BMI is calculated using metric data since BMI must be calculated with metric values.
The convert_unit() functions will convert value—from imperial to metric—using a length or weight conversion depending on unit_type. value can represent either a height or weight. Use these conversion rates in the function:
1 meter = 39.3701 inches (LENGTH conversions) 1 kg = 2.20462 lb. (WEIGHT conversions)
- Ask the user for a height value and a weight value.
- Calculate the BMI using the function in #2. If the user will use metric, call the calc_BMI() function without the bool variable parameter. If the user will use imperial, pass in a value of false in the last parameter of the function.
- Display the results to the user.
Sample main()
int main() { double height, weight, bmi; if (use_metric()) { cout << "Okay, using metric...\n"; cout << "What is your height in meters? "; cin >> height; cout << "What is your weight in kg? "; cin >> weight; // call to function with default parameter // notice only 2 parameters? bmi = calc_BMI(height, weight); } else { cout << "Okay, using imperial...\n"; cout << "What is your height in inches? "; cin >> height; cout << "What is your weight in pounds? "; cin >> weight; // call to function with default parameter // notice 3 parameters? bmi = calc_BMI(height, weight, false); } // you may have to use setprecision() cout << "Your BMI is " << bmi << endl; return 0; }
Sample Interaction / Output
$./a.out Do you want to use metric measurements (Y/N)? Y Okay, using metric… What is your height in meters? 1.5 What is your weight in kg? 80 Your BMI is 35.55
Run it again
$./a.out Do you want to use metric measurements (Y/N)? N Okay, using imperial… What is your height in inches? 59.055 What is your weight in lbs? 176.37 Your BMI is 35.55
LEGEND
PROGRAM OUTPUT
USER INPUT
FROM INPUT
CATALOG ID: CPP-CHAL0008
Print Requirements