wheelsmanx

CPS 271 Machine Problem 6

Apr 18th, 2017
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.12 KB | None | 0 0
  1. #include <iostream>
  2. #include <sstream>
  3. #include <iomanip>
  4. #include <string>
  5. #include <fstream>
  6. #include <sstream>
  7. #include <vector>
  8.  
  9. using namespace std;
  10.  
  11. bool isRegTime = false;
  12.  
  13. class InvalidHour : public exception {
  14. virtual const char* what() const throw()
  15. {
  16. return "Invalid Hour";
  17. }
  18. }InvalidHour;
  19. class InvalidMinute : public exception {
  20. virtual const char* what() const throw()
  21. {
  22. return "Invalid Minute";
  23. }
  24. }InvalidMinute;
  25. class InvalidSec : public exception {
  26. virtual const char* what() const throw()
  27. {
  28. return "Invalid Sec";
  29. }
  30. }InvalidSec;
  31. class InvalidDay : public exception {
  32. virtual const char* what() const throw()
  33. {
  34. return "Invalid Day";
  35. }
  36. }InvalidDay;
  37. class InvalidMonth : public exception {
  38. virtual const char* what() const throw()
  39. {
  40. return "Invalid Month";
  41. }
  42. }InvalidMonth;
  43.  
  44. vector <string> cstringsplit(string input, string delimeter) {
  45. int delimSize = delimeter.length();
  46. int inputSize = input.length();
  47. string buffer;
  48. vector <string> v;
  49. for (int i = 0; i < inputSize; i++) {
  50. if (input.substr(i, delimSize) != delimeter) {
  51. buffer += input[i];
  52. }
  53. else {
  54. v.push_back(buffer);
  55. buffer = "";
  56. i = i + delimSize - 1;
  57. }
  58. }
  59. v.push_back(buffer);
  60. buffer = "";
  61. return v;
  62. }
  63.  
  64. int Rec(int input, int base) {
  65. int returnobject = 0;
  66. if (input < base) {
  67. return + (input % base);
  68. }
  69. else {
  70. return (input % base) + (10 * Rec(input / base, base));
  71. }
  72. }
  73. string Rec(int input, int base, string tempString) {
  74.  
  75. if (input < base) {
  76. return to_string(input % base);
  77. }
  78. else {
  79. tempString = Rec(input / base, base, tempString);
  80. int tempRemainder = input % base;
  81. switch (tempRemainder) {
  82. case 10: tempString += "A"; break;
  83. case 11: tempString += "A"; break;
  84. case 12: tempString += "A"; break;
  85. case 13: tempString += "A"; break;
  86. case 14: tempString += "A"; break;
  87. case 15: tempString += "A"; break;
  88. default: tempString += to_string(tempRemainder);
  89. }
  90. }
  91. return tempString;
  92. }
  93.  
  94. void main() {
  95. int inputa, inputb;
  96. string a, b;
  97.  
  98. ifstream fileInput;
  99. fileInput.open("C:\\temp\\BaseText.txt");
  100. while (!fileInput.eof()) {
  101. fileInput >> inputa >> a >> b >> inputb;
  102. cout << endl << "Input is: " << inputa << endl << "Base is: " << inputb << endl << "Result is: " << Rec(inputa, inputb) << endl;
  103. }
  104. string userInput;
  105. cout << "Please insert the date and time you were born in the format of (8-27-1980 10:56:59 pm) or (8-27-1980 22:56:59.)" << endl;
  106. getline(cin, userInput);
  107. vector <string> userInputVector = cstringsplit(userInput, " ");
  108. for (string c : userInputVector) {
  109. if (c == "pm") {
  110. isRegTime = true;
  111. }
  112. }
  113. vector <string> dateVector = cstringsplit(userInputVector.at(0), "-");
  114. vector <string> timeVector = cstringsplit(userInputVector.at(1), ":");
  115. vector <int> dateTimeVector;
  116. // here I just rejoin everything in dateTimeVector as an int after parsing it all to ints using string stream
  117.  
  118. for (string c : dateVector) {
  119. istringstream buffer(c);
  120. int value;
  121. buffer >> value;
  122. dateTimeVector.push_back(value);
  123. }
  124. for (string c : timeVector) {
  125. istringstream buffer(c);
  126. int value;
  127. buffer >> value;
  128. dateTimeVector.push_back(value);
  129. }
  130.  
  131. if (isRegTime == true) {
  132. //cout << dateTimeVector.at(3);
  133. if (dateTimeVector.at(3) == 12) {
  134. dateTimeVector.at(3) = 0;
  135. }
  136. dateTimeVector.at(3) = dateTimeVector.at(3) + 12;
  137. //cout << dateTimeVector.at(3);
  138. }
  139.  
  140. // lets do some checks
  141. try {
  142. if (dateTimeVector.at(0) > 12 || dateTimeVector.at(0) < 1) {
  143. throw(InvalidMonth);
  144. }
  145. if (dateTimeVector.at(1) > 31 || dateTimeVector.at(1) < 1) {
  146. throw(InvalidDay);
  147. }
  148. if (dateTimeVector.at(3) > 24 || dateTimeVector.at(3) < 0) {
  149. throw(InvalidHour);
  150. }
  151. if (dateTimeVector.at(4) > 60 || dateTimeVector.at(4) < 0) {
  152. throw(InvalidMinute);
  153. }
  154. if (dateTimeVector.at(5) > 60 || dateTimeVector.at(5) < 0) {
  155. throw(InvalidSec);
  156. }
  157. }
  158. catch (exception& e) {
  159. cout << e.what() << endl;
  160. }
  161. string resultString = "You Were Born on ";
  162. switch (dateTimeVector.at(0)) {
  163. case 1: {resultString += "January"; break; }
  164. case 2: {resultString += "Febuary"; break; }
  165. case 3: {resultString += "March"; break; }
  166. case 4: {resultString += "April"; break; }
  167. case 5: {resultString += "May"; break; }
  168. case 6: {resultString += "June"; break; }
  169. case 7: {resultString += "July"; break; }
  170. case 8: {resultString += "August"; break; }
  171. case 9: {resultString += "September"; break; }
  172. case 10: {resultString += "October"; break; }
  173. case 11: {resultString += "November"; break; }
  174. case 12: {resultString += "December"; break; }
  175. }
  176.  
  177. resultString += " ";
  178. resultString += dateVector.at(1);
  179. resultString += ", ";
  180. resultString += dateVector.at(2);
  181. resultString += " at ";
  182. resultString += timeVector.at(0);
  183. resultString += ":";
  184. resultString += timeVector.at(1);
  185. resultString += ":";
  186. resultString += timeVector.at(2);
  187. cout << resultString << endl;
  188.  
  189. //0 month 0-12
  190. //1 day
  191. //2 year
  192. //3 hour
  193. //4 minute
  194. //5 seconds
  195. //6 optional PM/AM
  196. system("pause");
  197. }
Advertisement
Add Comment
Please, Sign In to add comment