現在、私はC++クラスの課題に取り組んでいます。このプロジェクトの目的は、軍事時間を正確に示すことです。時間は0-23分と0-59分の範囲で設定できます。C++時刻の加算+時間の検出
最初の部分では、時間パラメータとオプションの分パラメータを受け入れるコンストラクタを作成しました。ここで
:
#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にそれらを設定した場合。
次のステップは、ユーザー/ sysが時間を分単位で追加できる「setTime」関数を追加することでした(これが問題のある場所です)。追加された分が59分を超えると、1時間に1分が加算されます。 add時間が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より大きいかどうかをチェックし、MAXMINが59より小さい場合は1を加算します。それは時のチェックが入ってきて、23時を過ぎるかどうかをチェックします。そのアイデアは、私たちが設定された時間を過ぎるまでループを続けるということです。しかし、プログラムを実行するときには、それはストールします。これはどこかで無限ループがあると私に信じさせてくれるが、私はそれを特定できない。私はaddMIN = addMin - MAXMIN
変数は各反復で更新されていませんでした含まれていなかったとしてaddMin - MAXMIN
は何もしなかった
int main()
{
time aTime(50,15);
aTime.displayTime();
aTime.setTime(100);
aTime.displayTime();
// Pause before we exit
system("pause.exe");
return 0;
}
'addMin - MAXMIN;'行は何もしません。 – immibis
私は厳密に-59を定義しなければなりませんか?私はスコープがオフでない限り、一定の宣言を見ることができると思いました –
ああ待ってください。私は今、addMin = addMin - MAXMINを追加する必要があることがわかります。私は今、自分の部分でばかげた間違いを理解している –