944,147 Members | Top Members by Rank

Ad:
  • C++ Discussion Thread
  • Unsolved
  • Views: 450
  • C++ RSS
Nov 3rd, 2009
0

Overload Boolean Comparison Operators

Expand Post »
I am trying to overload the Comparison Operators, to have them compare the RMR of two fitness trackers. I need to change the RMR from a double to an int for the comparison. How would I do this when the RMR is calculated by a function. Here is my code.

C++ Syntax (Toggle Plain Text)
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4. #include <iomanip>
  5. #include "FitnessTracker.h"
  6. using namespace std;
  7.  
  8. struct Activity
  9. {
  10. string name;
  11. int burnForLo; // <150lbs
  12. int burnForMed; // 150-250
  13. int burnForHi; // >250
  14. }info[12];
  15.  
  16. void CreateStruct(Activity info[], ifstream &Activities);
  17. void StartTracker(FitnessTracker &Tracker);
  18. char DisplayAndMenu(FitnessTracker &Tracker);
  19. void AddCalories(FitnessTracker &Tracker);
  20. void ExerciseMenu(Activity info[], int &exercise);
  21. void CalculateCalsBurned(Activity info[], int &exercise, FitnessTracker &Tracker);
  22. void EndDay(FitnessTracker &Tracker);
  23. void main()
  24. {
  25. char Menu;
  26. int exercise;
  27. FitnessTracker Tracker(0, 0, 0, 'M');
  28. ifstream Activities;
  29. CreateStruct(info, Activities);
  30. StartTracker(Tracker);
  31. do
  32. {
  33. Menu = DisplayAndMenu(Tracker);
  34. if (Menu == 'A' || Menu == 'a')
  35. AddCalories(Tracker);
  36. else if (Menu == 'D' || Menu == 'd')
  37. {
  38. ExerciseMenu(info, exercise);
  39. CalculateCalsBurned(info, exercise, Tracker);
  40. }
  41. else if (Menu == 'E' || Menu == 'e')
  42. EndDay(Tracker);
  43. }while (Menu != 'Q' && Menu != 'q');
  44. }
  45. void CreateStruct(Activity info[], ifstream &Activities)
  46. {
  47. int i;
  48. Activities.open("exerciseTotals.txt");
  49.  
  50. for (i=0; i<12; i++)
  51. {
  52. Activities >> info[i].name >> info[i].burnForLo >> info[i].burnForMed >> info[i].burnForHi;
  53. }
  54. }
  55. void StartTracker(FitnessTracker &Tracker)
  56. {
  57. cout << endl << " Welcome to the Fitness Tracker!" << endl << endl;
  58. Tracker.intializeAge();
  59. Tracker.intializeHeight();
  60. Tracker.intializeWeight();
  61. Tracker.intializeGender();
  62. cout << "Thank you, let's begin." << endl;
  63. system("pause");
  64. system("cls");
  65. }
  66. char DisplayAndMenu(FitnessTracker &Tracker)
  67. {
  68. char Menu;
  69. cout << Tracker;
  70. cout << endl << "Please select an option:" << endl
  71. << "A)dd Calories Eaten" << endl
  72. << "D)o Some Exercise" << endl
  73. << "E)nd The Day" << endl
  74. << "Q)uit" << endl
  75. << "Your choice? ";
  76. cin >> Menu;
  77. while ((Menu != 'A') && (Menu != 'a') && (Menu != 'D') && (Menu != 'd') && (Menu != 'E') &&
  78. (Menu != 'e') && (Menu != 'Q') && (Menu != 'q'))
  79. {
  80. cout << "That is not a valid option. Please try again: ";
  81. cin >> Menu;
  82. }
  83. return Menu;
  84. }
  85. void AddCalories(FitnessTracker &Tracker)
  86. {
  87. int Calories;
  88. cout << "How many calories did you eat? ";
  89. cin >> Calories;
  90. while (Calories < 0)
  91. {
  92. cout << "You cannot eat fewer than zero calories! Try again." << endl
  93. << "How many calories did you eat? ";
  94. cin >> Calories;
  95. }
  96. Tracker.AddCaloriesConsumed(Calories);
  97. cout << endl << "*****************" << endl
  98. << " " << Calories << " calories added" << endl
  99. << "*****************" << endl << endl;
  100. }
  101. void ExerciseMenu(Activity info[], int &exercise)
  102. {
  103. int i;
  104. do
  105. {
  106. cout << "Please choose an exercise from the list:" << endl;
  107. for (i=0; i<12; i++)
  108. {
  109. cout << i+1 << ") " << info[i].name << endl;
  110. }
  111. cout << "13.) None." << endl;
  112. cin >> exercise;
  113. }while ((exercise < 1) || (exercise > 13));
  114. }
  115. void CalculateCalsBurned(Activity info[], int &exercise, FitnessTracker &Tracker)
  116. {
  117. int CalsBurned;
  118.  
  119. if (Tracker.getWeight() < 150)
  120. CalsBurned = info[exercise-1].burnForLo;
  121. else if ((Tracker.getWeight() >= 150) && (Tracker.getWeight() <= 250))
  122. CalsBurned = info[exercise-1].burnForMed;
  123. else
  124. CalsBurned = info[exercise-1].burnForHi;
  125.  
  126. cout << endl << "*****************" << endl
  127. << " " << CalsBurned << " calories burned" << endl
  128. << "*****************" << endl;
  129. Tracker.AddCaloriesBurned(CalsBurned);
  130. }
  131. void EndDay(FitnessTracker &Tracker)
  132. {
  133. cout << endl << "**************End of Day**************" << endl;
  134. if (Tracker.AdjustWeight() < 0)
  135. cout << "You lost " << (Tracker.AdjustWeight()*-1) << " pounds" << endl;
  136. else if (Tracker.AdjustWeight() > 0)
  137. cout << "You gained" << Tracker.AdjustWeight() << "pounds" << endl;
  138. cout << "**************End of Day**************" << endl << endl;
  139. Tracker.setCaloriesBurned(0);
  140. Tracker.setCaloriesConsumed(0);
  141. Tracker.setWeight(Tracker.getWeight()+Tracker.AdjustWeight());
  142. }

C++ Syntax (Toggle Plain Text)
  1. // FitnessTracker.cpp
  2. #include <iostream>
  3. #include <iomanip>
  4. #include "FitnessTracker.h"
  5. using namespace std;
  6.  
  7. // constructors:
  8. FitnessTracker::FitnessTracker()
  9. {
  10. }
  11. FitnessTracker::FitnessTracker(int A, int H, int W, char G)
  12. {
  13. Age = A;
  14. Height = H;
  15. Weight = W;
  16. Gender = G;
  17. CaloriesBurned = 0;
  18. CaloriesConsumed = 0;
  19. }
  20.  
  21. // Overloaded Operators
  22. ostream & operator << (ostream &os, FitnessTracker &Tracker)
  23. {
  24. os << "Age: " << Tracker.Age << endl
  25. << "Gender: " << Tracker.Gender << endl
  26. << "Weight: " << Tracker.Weight << endl
  27. << "Height: " << Tracker.Height << endl
  28. << "RMR: " << Tracker.RMR() << endl
  29. << "Cals Burned: " << Tracker.CaloriesBurned + Tracker.RMR() << endl
  30. << "Cals Consumed: " << Tracker.CaloriesConsumed << endl
  31. << "Calorie Difference: " << Tracker.CalorieDifference() << endl;
  32. return os;
  33. }
  34.  
  35.  
  36.  
  37. // utility functions:
  38. double FitnessTracker::RMR()
  39. {
  40. if (getGender() == 'M')
  41. return (66+(6.22*getWeight())+(12.7*getHeight())-(6.8*getAge()));
  42. else
  43. return (655+(4.36*getWeight())+(4.32*getHeight())-(4.7*getAge()));
  44. }
  45. int FitnessTracker::CalorieDifference()
  46. {
  47. return (getCaloriesConsumed()-(getCaloriesBurned()+RMR()));
  48. }
  49. double FitnessTracker::AdjustWeight()
  50. {
  51. return (CalorieDifference()/3500.0);
  52. }
  53.  
  54. // intializing functions
  55. void FitnessTracker::intializeAge()
  56. {
  57. int Age;
  58. cout << "Please enter your Age: ";
  59. cin >> Age;
  60. setAge(Age);
  61. while (setAge(Age) == false)
  62. {
  63. cout << "That Age is not valid, please enter your Age again: ";
  64. cin >> Age;
  65. setAge(Age);
  66. }
  67. }
  68. void FitnessTracker::intializeHeight()
  69. {
  70. double Height;
  71. cout << "Please enter your Height: ";
  72. cin >> Height;
  73. setHeight(Height);
  74. while (setHeight(Height) == false)
  75. {
  76. cout << "That Height is not valid, please enter your Height again: ";
  77. cin >> Height;
  78. setHeight(Height);
  79. }
  80. }
  81. void FitnessTracker::intializeWeight()
  82. {
  83. double Weight;
  84. cout << "Please enter your Weight: ";
  85. cin >> Weight;
  86. setWeight(Weight);
  87. while (setWeight(Weight) == false)
  88. {
  89. cout << "That Weight is not valid, please enter your Weight again: ";
  90. cin >> Weight;
  91. setWeight(Weight);
  92. }
  93. }
  94. void FitnessTracker::intializeGender()
  95. {
  96. char Gender;
  97. cout << "Please enter your Gender (M or F): ";
  98. cin >> Gender;
  99. setGender(Gender);
  100. while (setGender(Gender) == false)
  101. {
  102. cout << "That Gender is not valid, please enter your Gender (M or F) again: ";
  103. cin >> Gender;
  104. setGender(Gender);
  105. }
  106. }
  107. // mutators:
  108. bool FitnessTracker::setAge(int A)
  109. {
  110. if(A <= 0) return false;
  111.  
  112. Age = A;
  113. return true;
  114. }
  115. bool FitnessTracker::setHeight(double H)
  116. {
  117. if(H <= 0) return false;
  118.  
  119. Height = H;
  120. return true;
  121. }
  122. bool FitnessTracker::setWeight(double W)
  123. {
  124. if(W <= 0) return false;
  125.  
  126. Weight = W;
  127. return true;
  128. }
  129. bool FitnessTracker::setGender(char G)
  130. {
  131. if(G == 'm' || G == 'M')
  132. {
  133. Gender = 'M';
  134. return true;
  135. }
  136. else if(G == 'f' || G == 'F')
  137. {
  138. Gender = 'F';
  139. return true;
  140. }
  141. return false;
  142. }
  143. bool FitnessTracker::setCaloriesBurned(int CB)
  144. {
  145. if (CB < 0) return false;
  146. CaloriesBurned = CB;
  147. return true;
  148. }
  149. void FitnessTracker::AddCaloriesBurned(int CB)
  150. {
  151. CaloriesBurned = getCaloriesBurned() + CB;
  152. }
  153. bool FitnessTracker::setCaloriesConsumed(int CC)
  154. {
  155. if (CC < 0) return false;
  156. CaloriesConsumed = CC;
  157. return true;
  158. }
  159. void FitnessTracker::AddCaloriesConsumed(int CC)
  160. {
  161. CaloriesConsumed = getCaloriesConsumed() + CC;
  162. }
  163. // accessors:
  164. int FitnessTracker::getAge()
  165. {
  166. return Age;
  167. }
  168. double FitnessTracker::getHeight()
  169. {
  170. return Height;
  171. }
  172. double FitnessTracker::getWeight()
  173. {
  174. return Weight;
  175. }
  176. char FitnessTracker::getGender()
  177. {
  178. return Gender;
  179. }
  180. int FitnessTracker::getCaloriesBurned()
  181. {
  182. return CaloriesBurned;
  183. }
  184. int FitnessTracker::getCaloriesConsumed()
  185. {
  186. return CaloriesConsumed;
  187. }

C++ Syntax (Toggle Plain Text)
  1. // FitnessTracker.h
  2. #ifndef FitnessTracker_H
  3. #define FitnessTracker_H
  4. #include <iostream>
  5. using namespace std;
  6.  
  7. class FitnessTracker
  8. {
  9. public:
  10. // constructors:
  11. FitnessTracker();
  12. FitnessTracker(int A, int H, int W, char G);
  13.  
  14. // accessors:
  15. int getAge();
  16. double getHeight();
  17. double getWeight();
  18. char getGender();
  19. int getCaloriesBurned();
  20. int getCaloriesConsumed();
  21.  
  22.  
  23. // mutators:
  24. bool setAge(int A);
  25. bool setHeight(double H);
  26. bool setWeight(double W);
  27. bool setGender(char G);
  28. bool setCaloriesBurned(int CB);
  29. void AddCaloriesBurned(int CB);
  30. bool setCaloriesConsumed(int CC);
  31. void AddCaloriesConsumed(int CC);
  32.  
  33. // utility functions:
  34. void display();
  35. double RMR();
  36. int CalorieDifference();
  37. double AdjustWeight();
  38. void intializeAge();
  39. void intializeHeight();
  40. void intializeWeight();
  41. void intializeGender();
  42.  
  43. // Friend Functions
  44. friend ostream & operator<<(ostream& , FitnessTracker&);
  45.  
  46.  
  47. // private:
  48. int Age;
  49. double Height;
  50. double Weight;
  51. char Gender;
  52. int CaloriesBurned;
  53. int CaloriesConsumed;
  54. };
  55.  
  56. #endif
Similar Threads
Reputation Points: 10
Solved Threads: 0
Newbie Poster
rkulp is offline Offline
8 posts
since Nov 2009

This thread is more than three months old

No one has posted to this discussion for at least three months. Please let old threads die and do not reply to them unless you feel you have something new and valuable to contribute that absolutely must be added to make the discussion complete. Otherwise, please start a new thread in this forum instead.
Message:
Previous Thread in C++ Forum Timeline: Breaking out of a while loop if condition met
Next Thread in C++ Forum Timeline: solving max flow by push relabel using C++





About Us | Contact Us | Advertise | Acceptable Use Policy
Forum Index | Build Custom RSS Feed


Follow us on Twitter


© 2011 DaniWeb® LLC