Overload Boolean Comparison Operators

Please support our C++ advertiser: Intel Parallel Studio Home
Reply

Join Date: Nov 2009
Posts: 4
Reputation: rkulp is an unknown quantity at this point 
Solved Threads: 0
rkulp rkulp is offline Offline
Newbie Poster

Overload Boolean Comparison Operators

 
0
  #1
23 Days Ago
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.

  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. }

  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. }

  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
Reply With Quote Quick reply to this message  
Reply

Message:


Thread Tools Search this Thread



About Us | Contact Us | Advertise | DaniWeb | Acceptable Use Policy | RSS Feed

©2003 - 2009 DaniWeb® LLC