目前正致力于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;
}
答案 0 :(得分:1)
行addMin - MAXMIN
没有做任何事情,因为我没有包含addMIN = addMin - MAXMIN
变量没有在每次迭代中得到更新。
@immibis的信用