Что не так с моим алгоритмом преобразования часов AM / PM в 24H? - PullRequest
0 голосов
/ 03 апреля 2020

Итак, я создал алгоритм на 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...