Call-by-Value, Multiple Files

Lab Assignment

The assignment contains two parts.
  1. Basal Metabolic Rate. Study "Observing Program Stack" described here. As you program your project below, demonstrate to the lab instructor observing variables local to several function frames.

    Create a project titled Lab5_BMR with a single file titled bmr.cpp The program should calculate the person's Basal Metabolic Rate - the number of calories per day a person's body needs to function. Then, on the basis of calculated BMR, your program should output how many doughnuts a person can consume. A medium-size doughnut contains 251 calories.

    The BMR formula is as follows:

    Depending on gender, BMR should be calculated by functions bmrWomen() and bmrMen() that both accept three parameters: "weight in pounds", "height in inches" and "age in years" and return the BMR. Note that the BMR has a fractional part.

    The main function should prompt the user for her gender, weight, height and age; compute the BMR and the number of doughnuts that can be consumed per day; and then output both the BMR and the number doughnuts.

    The number of doughnuts is: BMR divided by the number of calories in a doughnut. Fractional number of doughnuts can be dropped. The number of calories per doughnut (251) should be put in a named constant.

    On the basis of the user's gender, main() function should decide whether to invoke bmrWomen() or bmrMen(). The user should input her height in feet and inches. The main() function should compute the total number of inches (one foot has 12 inches) and pass it to the bmr functions.

    Make sure to use the bmr function prototypes and put the function definitions below the main function definition.

  2. Figures. Create a project titled Lab5_Figures. This project will contain multiple files. Write a program that repeatedly asks the user to select either square, left or right triangle, then inputs the figure size and then prints the appropriate shape in stars. The program should quit if the user inputs an invalid option. See an example dialog below:
    1. square
    2. left triangle
    3. right triangle
    select figure: 2
    select size: 4
    ****
    ***
    **
    *
    1. square
    2. left triangle
    3. right triangle
    ...
    

    You can reuse your code from the Looping lab. Place the star-printing code in three separate functions: square, leftTriangle and rightTriangle. Each function should accept a single integer parameter - the size of the figure and return no value (be a void-function). Create three separate files figures.cpp, figures.h, and figuresInput.cpp. Place the triangle and square function definitions in figures.cpp and their prototypes in figures.h. Make sure that the header file is protected against multiple inclusion. Place the main function in figuresInput.cpp

Make sure your programs adhere to proper programming style. Submit your projects to the subversion repository. Do not forget to verify your submission on the web.