首页 > 解决方案 > 我的 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;
}

标签: c++algorithm

解决方案


推荐阅读