C++时间添加+超时检测

C++ Time adding + over time detection

目前正在为我正在接受的 C++ class 作业。该项目的目标是准确显示军用时间。小时的范围是 0-23,分钟的范围是 0-59。

对于第一部分,我创建了一个接受小时参数和可选的分钟参数的构造函数。

这里:

#include "stdafx.h"
#include<iostream>
#include<string>
using namespace std;

// Class Time
class time
{
private:
    int hours, minutes;
public:
    time(int, int = 0);
    void displayTime();
    void setTime(int);
};

// Max time possibilities
const int MAXMIN = 59;
const int MAXHOUR = 23;

// time constructor
time::time(int conHour, int conMin)
{
// Check for max hour limitations
if (conHour > MAXHOUR)
{
    hours = MAXHOUR;
}
else
{
    hours = conHour;
}

// Check for max minute limitation
if (conMin > MAXMIN)
{
    minutes = MAXMIN;
}
else
{
    minutes = conMin;
}
}

如果我们设置的小时数大于 23 或分钟数大于 59,它只会分别将它们设置为最大值 23、59。

下一步是添加一个 "setTime" 函数,其中 user/sys 可以增加分钟数(这就是问题所在)。如果增加的分钟数会导致分钟数超过 59,我们就将小时数加一。如果小时添加导致小时超过 23,我们将其重置回 0 并根据需要进行计数。

目前我有以下功能:

// Set the time
void time::setTime(int newMin)
{
    int addMin = newMin;

// Check for max minutes, if so add an hour
do
{
    if (minutes + (addMin - MAXMIN) > MAXMIN)
    {
        addMin - MAXMIN;
        if (hours + 1 > MAXHOUR)
        {
            hours = 0;
        }
        else
        {
            hours = hours + 1;
        }
    }
    else
    {
        minutes += addMin;
    }

} while (minutes + addMin > MAXMIN);

minutes += addMin;

我写了一个循环不断检查 addMin 数量是否会导致分钟超过 59 的函数。我相当确定我写它的方式是检查分钟是否 +(addMin-MAXMIN)如果大于 MAXMIN,则减去 59,然后加上一个小时。这就是小时检查的用武之地,检查小时是否会超过 23,如果超过则重置它。这个想法是它会一直循环直到我们有一个设定的时间。但是,当 运行 程序时,它会停止运行。这让我相信我在某个地方有一个无限循环,但我无法识别它。

这是我的主要功能:

int main()
{   
    time aTime(50,15);
aTime.displayTime();

aTime.setTime(100);
aTime.displayTime();
// Pause before we exit
system("pause.exe");
return 0;
}

addMin - MAXMIN 没有做任何事情,因为我没有包含 addMIN = addMin - MAXMIN 每次迭代都没有更新变量。

感谢@immibis