C ++时间添加+随时间变化检测

时间:2016-11-01 00:47:35

标签: c++ visual-studio std

目前正致力于C ++课程的作业。该项目的目标是准确地显示军事时间。小时数可以是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。

下一步是添加&#34; setTime&#34;功能,其中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;
}

1 个答案:

答案 0 :(得分:1)

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

@immibis的信用