Advertisement
Guest User

218709

a guest
Jun 26th, 2017
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.51 KB | None | 0 0
  1. #include <iostream>
  2. #include <windows.h>
  3. #include <fstream>
  4.  
  5. std::string inputName ()
  6. {
  7. std::cout<<"Please enter your name: ";
  8. std::string inputn;
  9. std::getline(std::cin,inputn);//read full line of text into inputn
  10. return inputn;
  11. }
  12.  
  13. char inputGender ()
  14. {
  15. std::cout<<"Please enter your gender (M/m or F/f): ";
  16. char inputg;
  17. std::cin>>inputg;
  18. while(!(inputg=='m'||inputg=='M'||inputg=='f'||inputg=='F'))//for clarity sake,can be simplified via de morgen's law
  19. {
  20. std::cout<<"Please key in only in alphabet, M/m for male, F/f for female:";
  21. std::cin>>inputg;
  22. }
  23. return inputg;
  24. }
  25.  
  26. int inputAge ()
  27. {
  28. std::cout<<"Please enter your age: ";
  29. int inputa;
  30. std::cin>>inputa;
  31. return inputa;
  32. }
  33.  
  34. int inputHeight ()
  35. {
  36. std::cout<<"Please enter your height in cm: ";
  37. int inputh;
  38. std::cin>>inputh;
  39. return inputh;
  40. }
  41.  
  42. int inputWeight ()
  43. {
  44. std::cout<<"Please enter your weight in kg: ";
  45. int inputw;
  46. std::cin>>inputw;
  47. return inputw;
  48. }
  49.  
  50. // basal/daily metabolic rate
  51. // identify average calorie burned
  52. // when body at total rest
  53. float calculateBmr (char g, int a, int h, int w)
  54. {
  55. float bmr;
  56. g=toupper(g);//small caps alphabet to big caps
  57. switch (g)
  58. {
  59. //case 'm':
  60. case 'M':
  61. bmr=(10.0*w)+(6.25*h)-(5.0*a)+5;
  62. break;
  63. //case 'f':
  64. case 'F':
  65. bmr=(10.0*w)+(6.25*h)-(5.0*a)-161;
  66. break;
  67. }
  68. return bmr;
  69. }
  70.  
  71. float activityFactor ()
  72. {
  73. std::cout<<"How often do you exercise in a week?\n";
  74. std::cout<<"[1] Sedentary (little-to-no exercise)\n";
  75. std::cout<<"[2] Lightly active (1-3 days of exercise)\n";
  76. std::cout<<"[3] Moderately active (3-5 days of exercise)\n";
  77. std::cout<<"[4] Very active (6-7 days of exercise)\n";
  78. std::cout<<"Answer: ";
  79. int answer;
  80. std::cin>>answer;
  81. while(answer>4||answer<1)
  82. {
  83. std::cout<<"Please key in only 1 to 4.\nAnswer: ";
  84. std::cin>>answer;
  85. }
  86. float factor;//activity factor floating point, stores 1.2 - 1.7
  87. switch (answer)
  88. {
  89. case 1:
  90. factor=1.2;
  91. break;
  92. case 2:
  93. factor=1.4;
  94. break;
  95. case 3:
  96. factor=1.6;
  97. break;
  98. case 4:
  99. factor=1.7;
  100. break;
  101. }
  102. return factor;
  103. }
  104.  
  105. //BMI = weight (kg) / (height(m)*height (m) )
  106. float calculateBmi (int h, int w)
  107. {
  108. return w/(h*h/10000.0);//.0 for implicit type conversion
  109. }
  110.  
  111. //TDEE = BMR*Activity Factor
  112. float calculateTdee (float b, float f)
  113. {
  114. return b*f;
  115. }
  116.  
  117. int mondayschedule ()
  118. {
  119. std::cout<<"Monday - Cardio\n";
  120. std::cout<<"30 minutes of either one of the following:\n";
  121. std::cout<<"1. Biking\n";
  122. std::cout<<"2. Walking\n";
  123. std::cout<<"3. Hiking\n";
  124. std::cout<<"4. Running stairs\n";
  125. std::cout<<"With 1 minute intervals of the following;\n";
  126. std::cout<<"1. Fast paced walk\n";
  127. std::cout<<"2. Slow Jog\n";
  128. std::cout<<"3. Sprint\n\n";
  129. return 0;
  130. }
  131.  
  132. int tuesdayschedule ()
  133. {
  134. std::cout<<"Tuesday - Arms\n";
  135. std::cout<<"Repeat the following exercises 2 times:\n";
  136. std::cout<<"1. Bicep Curls 10x\n";
  137. std::cout<<"2. Tricep Kickbacks 10x\n";
  138. std::cout<<"3. Shoulder Press 10x\n\n";
  139. return 0;
  140. }
  141.  
  142. int wednesdayschedule ()
  143. {
  144. std::cout<<"Wednesday - Abs and Obliques\n";
  145. std::cout<<"1. Crunches 20x\n";
  146. std::cout<<"2. Bicycle Crunches 20x\n";
  147. std::cout<<"3. Oblique Crunches 20x\n";
  148. std::cout<<"4. Plank 30 seconds\n";
  149. std::cout<<"5. Side Plank 30 seconds on each side\n\n";
  150. return 0;
  151. }
  152.  
  153. int thursdayschedule ()
  154. {
  155. std::cout<<"Thursday - Lower Body\n";
  156. std::cout<<"Repeat the following exercises 2 times:\n";
  157. std::cout<<"1. Walking Lunges 10x each leg\n";
  158. std::cout<<"2. Wall Squat 20 seconds (slowly build up to minute)\n";
  159. std::cout<<"3. Calf Raises 15x each leg\n";
  160. std::cout<<"4. Jump Squat 10x\n\n";
  161. return 0;
  162. }
  163.  
  164. int fridayschedule ()
  165. {
  166. std::cout<<"Friday - Lower Body\n";
  167. std::cout<<"1. Walking Lunges 10x each leg\n";
  168. std::cout<<"2. Wall Squat 20 seconds (slowly build up to minute)\n";
  169. std::cout<<"3. Calf Raises 15x each leg\n";
  170. std::cout<<"4. Jump Squat 10x\n\n";
  171. return 0;
  172. }
  173.  
  174. int saturdayschedule ()
  175. {
  176. std::cout<<"Saturday - Rest\n\n";
  177. return 0;
  178. }
  179.  
  180. int sundayschedule ()
  181. {
  182. std::cout<<"Sunday - Rest\n\n";
  183. return 0;
  184. }
  185.  
  186.  
  187. int weeklyschedule ()
  188. {
  189. system("cls");
  190.  
  191. mondayschedule ();
  192. tuesdayschedule ();
  193. wednesdayschedule ();
  194. thursdayschedule ();
  195. fridayschedule ();
  196. saturdayschedule ();
  197. sundayschedule ();
  198.  
  199. system("pause");
  200. }
  201.  
  202. int dailyschedule ()
  203. {
  204. int d, m, y;
  205. int num,num2;
  206. std::cout<<"Please enter a date."<<"\n\n";
  207. std::cout<<"Day(1-31): ";
  208. std::cin>>d;
  209. //error check date
  210. std::cout<<"\n\n";
  211. std::cout<<"Month(1-12): ";
  212. std::cin>>m;
  213. std::cout<<"\n\n";
  214. //error check month
  215. std::cout<<"Year: ";
  216. std::cin>>y;
  217. std::cout<<"\n\n";
  218. //error check year
  219.  
  220. //tomohiko sakamoto algorithm
  221. int t[]={0,3,2,5,0,3,5,1,4,6,2,4};
  222. y-=m<3;
  223. int dayofweek=(y+y/4-y/100+y/400+t[m-1]+d)%7;
  224.  
  225. switch (dayofweek)
  226. {
  227. case 1:
  228. mondayschedule ();
  229. break;
  230. case 2:
  231. tuesdayschedule ();
  232. break;
  233. case 3:
  234. wednesdayschedule ();
  235. break;
  236. case 4:
  237. thursdayschedule ();
  238. break;
  239. case 5:
  240. fridayschedule ();
  241. break;
  242. case 6:
  243. saturdayschedule ();
  244. break;
  245. case 7:
  246. sundayschedule ();
  247. break;
  248. }
  249. system("pause");
  250. return 0;
  251. }
  252.  
  253. int suggestedworkout (int tdee)
  254. {
  255. system("cls");
  256. std::cout<<"How many days in a week would you prefer to do exercise?\n";
  257. std::cout<<"Please choose from 2 to 5 days only.\n";
  258. std::cout<<"Answer: ";
  259. int day;
  260. std::cin>>day;
  261. //error check here
  262. system("cls");
  263. std::cout<<"Your ideal caloric intake is "<<tdee<<" cal.\n\n";
  264. switch (day)
  265. {
  266. //dayofweek determined by evenly distributed rest day
  267. case 2:
  268. mondayschedule ();
  269. thursdayschedule ();
  270. break;
  271. case 3:
  272. mondayschedule ();
  273. wednesdayschedule ();
  274. fridayschedule ();
  275. break;
  276. case 4:
  277. mondayschedule ();
  278. tuesdayschedule ();
  279. thursdayschedule ();
  280. fridayschedule ();
  281. break;
  282. case 5:
  283. mondayschedule ();
  284. tuesdayschedule ();
  285. wednesdayschedule ();
  286. thursdayschedule ();
  287. fridayschedule ();
  288. break;
  289. }
  290. std::cin.ignore();
  291. return day;
  292. }
  293.  
  294. //writeschedule function is done is reduce messiness
  295. std::ofstream write;//declare file output stream called write
  296.  
  297. int writemondayschedule ()
  298. {
  299. write<<"Monday - Cardio\n";
  300. write<<"30 minutes of either one of the following:\n";
  301. write<<"1. Biking\n";
  302. write<<"2. Walking\n";
  303. write<<"3. Hiking\n";
  304. write<<"4. Running stairs\n";
  305. write<<"With 1 minute intervals of the following;\n";
  306. write<<"1. Fast paced walk\n";
  307. write<<"2. Slow Jog\n";
  308. write<<"3. Sprint\n\n";
  309. return 0;
  310. }
  311.  
  312. int writetuesdayschedule ()
  313. {
  314. write<<"Tuesday - Arms\n";
  315. write<<"Repeat the following exercises 2 times:\n";
  316. write<<"1. Bicep Curls 10x\n";
  317. write<<"2. Tricep Kickbacks 10x\n";
  318. write<<"3. Shoulder Press 10x\n\n";
  319. }
  320.  
  321. int writewednesdayschedule ()
  322. {
  323. write<<"Wednesday - Abs and Obliques\n";
  324. write<<"1. Crunches 20x\n";
  325. write<<"2. Bicycle Crunches 20x\n";
  326. write<<"3. Oblique Crunches 20x\n";
  327. write<<"4. Plank 30 seconds\n";
  328. write<<"5. Side Plank 30 seconds on each side\n\n";
  329. return 0;
  330. }
  331.  
  332. int writethursdayschedule ()
  333. {
  334. write<<"Thursday - Lower Body\n";
  335. write<<"Repeat the following exercises 2 times:\n";
  336. write<<"1. Walking Lunges 10x each leg\n";
  337. write<<"2. Wall Squat 20 seconds (slowly build up to minute)\n";
  338. write<<"3. Calf Raises 15x each leg\n";
  339. write<<"4. Jump Squat 10x\n\n";
  340. return 0;
  341. }
  342.  
  343. int writefridayschedule ()
  344. {
  345. write<<"Friday - Lower Body\n";
  346. write<<"1. Walking Lunges 10x each leg\n";
  347. write<<"2. Wall Squat 20 seconds (slowly build up to minute)\n";
  348. write<<"3. Calf Raises 15x each leg\n";
  349. write<<"4. Jump Squat 10x\n\n";
  350. return 0;
  351. }
  352.  
  353. int printschedule (std::string name, int bmr, int bmi, int tdee)//one time use, made it more specific/less modular
  354. {
  355. int day=suggestedworkout (tdee);
  356. {
  357. std::ofstream write ("Schedule.TXT");
  358. write<<"Thank you for using Fitness Optimizer NEUTRONIUM7000.\n";
  359. write<<"Below are "<<name<<"'s personal details and recommended workout schedule.\n";
  360. write<<"---------------------------------------------------------------------------------------------\n";
  361. write<<"BMR, Basal Metabolic Rate : "<<bmr;
  362. write<<"\nBMI, Body Mass Index : "<<bmi;
  363. write<<"\nTDEE, Total Daily Energy Expenditure: "<<tdee;
  364. write<<"\n---------------------------------------------------------------------------------------------\n";
  365. writemondayschedule ();
  366. switch (day)
  367. {
  368. case 2:
  369. writethursdayschedule ();
  370. break;
  371. case 3:
  372. writewednesdayschedule ();
  373. writefridayschedule ();
  374. break;
  375. case 4:
  376. writetuesdayschedule ();
  377. writethursdayschedule ();
  378. break;
  379. case 5:
  380. writetuesdayschedule ();
  381. writewednesdayschedule ();
  382. writethursdayschedule ();
  383. writefridayschedule ();
  384. break;
  385. }
  386. }
  387. //std::cout<<"Your text file is ready,";
  388. //system("start Schedule.TXT");
  389. return 0;
  390. }
  391.  
  392. int page3 (std::string name, int bmr, int bmi, int tdee)
  393. {
  394. system("cls");
  395. std::cout<<"o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o\n";
  396. std::cout<<"Your BMR, BMI, TDEE were as below.\n";
  397. std::cout<<"BMR ="<<bmr<<"\n";
  398. std::cout<<"BMI ="<<bmi<<"\n";
  399. std::cout<<"TDEE="<<tdee<<"\n\n";
  400. std::cout<<"Context:\n";
  401. std::cout<<"BMR =Basal/Daily Metabolic Rate\n";
  402. std::cout<<"BMI =Body Mass Index\n";
  403. std::cout<<"TDEE=Total Daily Energy Expenditure\n";
  404. std::cout<<"o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o\n\n";
  405. std::cout<<"Options:\n";
  406. std::cout<<"[1] View weekly workout schedule\n";
  407. std::cout<<"[2] View daily workout schedule\n";
  408. std::cout<<"[3] View suggested workout schedule\n";
  409. std::cout<<"[4] Print suggested workout schedule\n";
  410. std::cout<<"[5] Restart from first page\n";
  411. std::cout<<"[6] Developer page and exit\n";
  412. std::cout<<"Answer: ";
  413. int choice;
  414. std::cin>>choice;
  415. //1-4, loop here
  416. //5-6, go back, return 0-1
  417. //other than that, reloop
  418. while(choice>6||choice<1)//key in wrong while loop
  419. {
  420. std::cout<<"Please answer only via number 1-6: ";
  421. std::cin>>choice;
  422. }
  423. switch (choice)
  424. {
  425. case 1:
  426. weeklyschedule ();
  427. break;
  428. case 2:
  429. dailyschedule ();
  430. break;
  431. case 3:
  432. suggestedworkout (tdee);
  433. break;
  434. case 4:
  435. printschedule (name, bmr, bmi, tdee);
  436. break;
  437. case 5:
  438. break;
  439. case 6:
  440. break;
  441. }
  442. }
  443.  
  444.  
  445. int main()
  446. {
  447. //change background/font color
  448. system("color 3B");
  449.  
  450. system("cls");//loop starts here
  451. //page 1
  452. std::cout<<"o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o\n";
  453. std::cout<<" Welcome to Fitness Optimizer NEUTRONIUM7000\n";
  454. std::cout<<"o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o\n";
  455.  
  456. std::string name;
  457. name = inputName ();
  458.  
  459. //page 2
  460. system("cls");
  461. std::cout<<"o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o\n";
  462. std::cout<<" Hello "<<name<<'\n';
  463. std::cout<<"o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o\n";
  464.  
  465. char gender;
  466. gender = inputGender ();
  467.  
  468. int age;
  469. age = inputAge ();
  470.  
  471. int height;
  472. height = inputHeight ();
  473.  
  474. int weight;
  475. weight = inputWeight ();
  476.  
  477. //std::cout<<name<<'\n'<<gender<<'\n'<<age<<'\n'<<height<<'\n'<<weight<<'\n';
  478.  
  479. float bmr=calculateBmr(gender, age, height, weight);
  480. std::cout<<"\nYour BMR (Basal Metabolic Rate) is "<<bmr<<"\n\n";//2dp, if needed change it to 0dp
  481.  
  482. float factor=activityFactor();
  483. //std::cout<<factor;
  484.  
  485. float bmi=calculateBmi (height, weight);
  486. //std::cout<<bmi;
  487.  
  488. float tdee=calculateTdee (bmr, factor);
  489. std::cout<<tdee;
  490.  
  491. //page 3, continue to class/inheritence
  492. page3(name, bmr, bmi, tdee);
  493. //return 1, start from 0
  494. //return 0, show dev page and end :D
  495.  
  496.  
  497. return 0;
  498. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement