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
目前正在为我正在接受的 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