24小时制标准时间

时间:2018-01-17 01:24:40

标签: c++ clock

我正在为课程编写一个程序,从军事时间转换为标准时间。其他一切似乎都运转良好,直到我输入60分钟。例如,如果我输入23:60它会给我下午11:60这是不正确的。我该如何解决?我试着检查是否分钟== 60将分钟重置为0但我无法弄明白。

#include <iostream> 

using namespace std;

void inputData(int&, int&, char&); // this function asks users to input 
information
void convertData(int&, int&, char&); // this converts the military time to 
standard time
int outputData(int&, int&, char&);  // this function puts all the other 
information together to output certain data
int main ()
{
int hours, minutes;
char am_pm;
char trueValue;

do
{
    inputData(hours, minutes, am_pm); // calls to input function
    convertData(hours, minutes, am_pm); // calls to the conversion function
    outputData(hours, minutes, am_pm); // calls to function that outputs all 
the data
    cout << "Would you like another conversion? Type Y or y to repeat." << 
endl;
    cin >> trueValue;
}

while (trueValue == 'y'|| trueValue == 'Y');

if (trueValue != 'y' || trueValue != 'Y')
    cout << "Thanks for using this converter. Have a nice day." << endl;

return 0;
}

void inputData (int &hours, int &minutes, char &am_pm)
{
cout << "Please enter hours (less than or equal to 24): "; // ask user to 
input hours.
do
{
    cin >> hours;
    if (hours > 24)
        cout << "ERROR! Must be less than 24" << endl;
} 
while (hours > 24); // end of hours loop

cout << "Please enter minutes (less than or equal to 60): "; // ask user to 
input minutes.
do
{
    cin >> minutes;
    if (minutes > 60)
    {
        cout << "Must be less than 60. Try again!" << endl;
    }
}
while (minutes > 60); //end of minutes loop
cout << endl;
cout << "You have entered: " << hours << ":" << minutes; // display what 
user inputs together.
cout << endl;

}

void convertData(int &hours, int &minutes, char &am_pm)
{ 
if (minutes == 60)
{
    hours++; // add an hour to 'hours'
    minutes = minutes/60;

}


if (hours < 12)
{
    hours = 12-12+1;
}
if (hours > 12)
{
    hours = hours - 12; // subtracts anything bigger than 12 to get standard 
time. Anything over 12 is PM according to project instruction
    am_pm = 'P';
}
else
if (hours == 12) 
{
    am_pm = 'P';
}
else
am_pm = 'A';
}


int outputData(int &hours, int &minutes, char &am_pm)
{   

if (am_pm == 'P')
cout <<"Your standard time is: " << hours << ":" << minutes << " P.M" << 
endl;
else
cout <<"Your standard time is: " << hours << ":" << minutes << " A.M" << 
endl;
}

2 个答案:

答案 0 :(得分:2)

您要为minutes > 60测试几个地方。请改为minutes >= 60

hours > 24相同。

答案 1 :(得分:0)

你的if语句是&gt; 60.将其更改为&gt; = 60.目前,您的if语句接受60作为分钟的有效条件。