c++ - 我的 AM/PM 到 24H 时钟转换算法有什么问题?
问题描述
所以我用 C++ 制作了一个算法,用于将 AM/PM 转换为 24H 时钟(例如输入 1:10PM/输出 13:10)。每当我输入一些东西时,它会输出一些我没想到的东西(例如上午 11:11 输出 143:11),在我做了一些事情之后它甚至不再输出了!我想我打破了逻辑,因为我是初学者。我做错了什么?
#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;
}
解决方案
推荐阅读
- swift4 - 在 iCloud 上创建相册并使用 cloudKit Swift 4 在每个相册中存储不同的照片
- firebase - 如何在 javascript 中使用 Firebase 函数插入现有的 Firebase DB 数组
- laravel - 有很多:显示具有 1 个或多个元素的区域
- ios - 在 swift 中使用正则表达式阿拉伯文和英文字符进行密码验证
- javascript - Bootstrap 4 JavaScript 不工作 Symfony4
- r - R / dyplr:将两行转换为两列
- python - 在 Dataframe 中为分类数据添加标签
- ios - iOS 应用测试本地化翻译是否具有相同的键
- python - 如何在 python 中抓取完整的 Instagram 页面?
- python - 如何让 python 信任我服务器的 TLS 自签名证书:ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败