12th Jan 2022, 1:19 PM
Alexey
Alexey - avatar
3 Answers
+ 1
Here is a list of some problems I found: 1) char arrays didn't have room for terminating NUL character. 2) input 12:00 AM not converted to 00:00 AM. 3) input 12:00 PM would result in 24:00 instead of 12:00. 4) hour output was not zero-filled to two digits. Here is a cleaned up revision that passes all tests. #include <iostream> #include <iomanip> using namespace std; int main() { int h; char mm[3]; //leave room for NUL char am[3]; //ditto string time; getline(cin, time); sscanf(time.c_str(),"%d:%s %s",&h,mm,am); h %= 12; //make 12 into 0 if(am[0]=='P') h+=12; cout<<setfill('0')<<setw(2)<<h<<":"<<mm; return 0; }
12th Jan 2022, 5:23 PM
Brian
Brian - avatar
+ 1
Thank you
12th Jan 2022, 5:54 PM
Alexey
Alexey - avatar
0
You want to convert the time from a 12 hour clock to a 24 hour clock. If you are given the time on a 12 hour clock, you should output the time as it would appear on a 24 hour clock. Task: Determine if the time you are given is AM or PM, then convert that value to the way that it would appear on a 24 hour clock. Input Format: A string that includes the time, then a space and the indicator for AM or PM. Output Format: A string that includes the time in a 24 hour format (XX:XX) Sample Input: 1:15 PM Sample Output: 13:15
12th Jan 2022, 1:20 PM
Alexey
Alexey - avatar