Итак, я создал алгоритм на C ++ для преобразования AM / PM в 24-часовой формат (например, вход 1:10 PM / выход 13:10). Всякий раз, когда я что-то ввожу, он выводит то, чего я не ожидал (например, 11:11 AM выводит 143: 11), а после того, как я что-то делал, он даже больше не выводит! Я думаю, что сломал логику c, поскольку я новичок. Что я сделал не так?
#include <iostream>
#include <string>
#include <bits/stdc++.h>
using namespace std;
int main()
{
int i=0;
string x;
cin>>x;
for(i;i<=x.length();i++){
if(x[x.length()-2]=='A'){
if(x[0]=='1' && x[1]=='2'){
x[0]='0';
x[1]='0';
x.erase(remove(x.begin(), x.end(), 'A'), x.end());
x.erase(remove(x.begin(), x.end(), 'M'), x.end());
}
else{
x.erase(remove(x.begin(), x.end(), 'A'), x.end());
x.erase(remove(x.begin(), x.end(), 'M'), x.end());
}
}
else{
if(x[0]=='1' && x[1] != ':'){
switch(x[1]){
case '0':
x[0]='2';
x[1]='2';
break;
case '1':
x[0]='2';
x[1]='3';
break;
case '2':
x[0]='0';
x[1]='0';
break;
}
}
else{
switch(x[0]){
case '1':
x.insert(1,"3");
break;
case '2':
x.insert(1,"4");
break;
case '3':
x.insert(1,"5");
break;
case '4':
x.insert(1,"6");
break;
case '5':
x.insert(1,"7");
break;
case '6':
x.insert(1,"8");
break;
case '7':
x.insert(1,"9");
break;
case '8':
x[0]='2';
x.insert(1,"0");
break;
case '9':
x[0]='2';
x.insert(1,"1");
break;
}
x.erase(remove(x.begin(), x.end(), 'P'), x.end());
x.erase(remove(x.begin(), x.end(), 'M'), x.end());
}
}
}
cout<<x<<endl;
return 0;
}