Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <sstream>
- #include <iomanip>
- #include <string>
- #include <fstream>
- #include <sstream>
- #include <vector>
- using namespace std;
- bool isRegTime = false;
- class InvalidHour : public exception {
- virtual const char* what() const throw()
- {
- return "Invalid Hour";
- }
- }InvalidHour;
- class InvalidMinute : public exception {
- virtual const char* what() const throw()
- {
- return "Invalid Minute";
- }
- }InvalidMinute;
- class InvalidSec : public exception {
- virtual const char* what() const throw()
- {
- return "Invalid Sec";
- }
- }InvalidSec;
- class InvalidDay : public exception {
- virtual const char* what() const throw()
- {
- return "Invalid Day";
- }
- }InvalidDay;
- class InvalidMonth : public exception {
- virtual const char* what() const throw()
- {
- return "Invalid Month";
- }
- }InvalidMonth;
- vector <string> cstringsplit(string input, string delimeter) {
- int delimSize = delimeter.length();
- int inputSize = input.length();
- string buffer;
- vector <string> v;
- for (int i = 0; i < inputSize; i++) {
- if (input.substr(i, delimSize) != delimeter) {
- buffer += input[i];
- }
- else {
- v.push_back(buffer);
- buffer = "";
- i = i + delimSize - 1;
- }
- }
- v.push_back(buffer);
- buffer = "";
- return v;
- }
- int Rec(int input, int base) {
- int returnobject = 0;
- if (input < base) {
- return + (input % base);
- }
- else {
- return (input % base) + (10 * Rec(input / base, base));
- }
- }
- string Rec(int input, int base, string tempString) {
- if (input < base) {
- return to_string(input % base);
- }
- else {
- tempString = Rec(input / base, base, tempString);
- int tempRemainder = input % base;
- switch (tempRemainder) {
- case 10: tempString += "A"; break;
- case 11: tempString += "A"; break;
- case 12: tempString += "A"; break;
- case 13: tempString += "A"; break;
- case 14: tempString += "A"; break;
- case 15: tempString += "A"; break;
- default: tempString += to_string(tempRemainder);
- }
- }
- return tempString;
- }
- void main() {
- int inputa, inputb;
- string a, b;
- ifstream fileInput;
- fileInput.open("C:\\temp\\BaseText.txt");
- while (!fileInput.eof()) {
- fileInput >> inputa >> a >> b >> inputb;
- cout << endl << "Input is: " << inputa << endl << "Base is: " << inputb << endl << "Result is: " << Rec(inputa, inputb) << endl;
- }
- string userInput;
- 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;
- getline(cin, userInput);
- vector <string> userInputVector = cstringsplit(userInput, " ");
- for (string c : userInputVector) {
- if (c == "pm") {
- isRegTime = true;
- }
- }
- vector <string> dateVector = cstringsplit(userInputVector.at(0), "-");
- vector <string> timeVector = cstringsplit(userInputVector.at(1), ":");
- vector <int> dateTimeVector;
- // here I just rejoin everything in dateTimeVector as an int after parsing it all to ints using string stream
- for (string c : dateVector) {
- istringstream buffer(c);
- int value;
- buffer >> value;
- dateTimeVector.push_back(value);
- }
- for (string c : timeVector) {
- istringstream buffer(c);
- int value;
- buffer >> value;
- dateTimeVector.push_back(value);
- }
- if (isRegTime == true) {
- //cout << dateTimeVector.at(3);
- if (dateTimeVector.at(3) == 12) {
- dateTimeVector.at(3) = 0;
- }
- dateTimeVector.at(3) = dateTimeVector.at(3) + 12;
- //cout << dateTimeVector.at(3);
- }
- // lets do some checks
- try {
- if (dateTimeVector.at(0) > 12 || dateTimeVector.at(0) < 1) {
- throw(InvalidMonth);
- }
- if (dateTimeVector.at(1) > 31 || dateTimeVector.at(1) < 1) {
- throw(InvalidDay);
- }
- if (dateTimeVector.at(3) > 24 || dateTimeVector.at(3) < 0) {
- throw(InvalidHour);
- }
- if (dateTimeVector.at(4) > 60 || dateTimeVector.at(4) < 0) {
- throw(InvalidMinute);
- }
- if (dateTimeVector.at(5) > 60 || dateTimeVector.at(5) < 0) {
- throw(InvalidSec);
- }
- }
- catch (exception& e) {
- cout << e.what() << endl;
- }
- string resultString = "You Were Born on ";
- switch (dateTimeVector.at(0)) {
- case 1: {resultString += "January"; break; }
- case 2: {resultString += "Febuary"; break; }
- case 3: {resultString += "March"; break; }
- case 4: {resultString += "April"; break; }
- case 5: {resultString += "May"; break; }
- case 6: {resultString += "June"; break; }
- case 7: {resultString += "July"; break; }
- case 8: {resultString += "August"; break; }
- case 9: {resultString += "September"; break; }
- case 10: {resultString += "October"; break; }
- case 11: {resultString += "November"; break; }
- case 12: {resultString += "December"; break; }
- }
- resultString += " ";
- resultString += dateVector.at(1);
- resultString += ", ";
- resultString += dateVector.at(2);
- resultString += " at ";
- resultString += timeVector.at(0);
- resultString += ":";
- resultString += timeVector.at(1);
- resultString += ":";
- resultString += timeVector.at(2);
- cout << resultString << endl;
- //0 month 0-12
- //1 day
- //2 year
- //3 hour
- //4 minute
- //5 seconds
- //6 optional PM/AM
- system("pause");
- }
Advertisement
Add Comment
Please, Sign In to add comment