Complete main() to read dates from input, one date per line. Each date's format must be as follows: March 1, 1990. Any date not following that format is incorrect and should be ignored. Use the substr() function to parse the string and extract the date. The input ends with -1 on a line alone. Output each correct date as: 3-1-1990.
Ex: If the input is:
March 1, 1990
April 2 1995
7/15/20
December 13, 2003
-1
then the output is:
3-1-1990
12-13-2003
code below
#include <iostream>
#include <string>
using namespace std;
int DateParser(string month) {
int monthInt = 0;
if (month == "January")
monthInt = 1;
else if (month == "February")
monthInt = 2;
else if (month == "March")
monthInt = 3;
else if (month == "April")
monthInt = 4;
else if (month == "May")
monthInt = 5;
else if (month == "June")
monthInt = 6;
else if (month == "July")
monthInt = 7;
else if (month == "August")
monthInt = 8;
else if (month == "September")
monthInt = 9;
else if (month == "October")
monthInt = 10;
else if (month == "November")
monthInt = 11;
else if (month == "December")
monthInt = 12;
return monthInt;
}
int main () {
string month, date, year, day, validDates[5];
int pos1, pos2, monthNumber;
int i = 0;
string hy = "-";
while(true){
getline(cin, date);
if(date == "-1"){
break;
}
//March 1, 1990 layout 1
//April 2 1995 layout 2
pos1 = date.find(' ');
pos2 = date.find(',');
month = date.substr(0, pos1);
//cout << month << endl; tester
day = date.substr(pos1 +1 , pos2-6);
//cout << day << endl; tester
year = date.substr(date.length()-4, date.length());
//cout << year << endl; tester
monthNumber = DateParser(month);
if (date.length() - 6 == ',' && monthNumber > 0){
validDates[++i] = month + hy + day + hy + year;
}
}
for (int j = 0; j < i; j++)
cout << validDates[j] << endl;
}
``
Use the provided DateParser() function to convert a month string to an integer. If the month string is valid, an integer in the range 1 to 12 inclusive is returned, otherwise 0 is returned. Ex: DateParser("February")
returns 2 and DateParser("7/15/20")
returns 0.
My program is not outputting anything but I believe it has to do with the dates not being put into the array correctly. Please spare me if its obvious.
If anyone could point out the error in my code that would perfect!