- 321 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 07:24:17 ]
- >>319 ごめ。endが負の数になる場合のチェックを入れ忘れてた。
#include <iostream> using namespace std; int passMinutes(const int start, const int end) { return end - start; } int main() { const int MIN_INADAY = 24*60; int h1, m1, h2, m2; cout << "開始時間(0-23):"; cin >> h1; cout << "開始分(0-59):"; cin >> m1; cout << "終了時間(0-23):"; cin >> h2; cout << "終了時間(0-59):"; cin >> m2; // 入力は省略。h1:m2 > h2:m2 の場合、h2:m2は翌日の時間だと判断する // startは、00:00〜23:59の範囲に丸められるがendは最小値だけが00:00に丸められる。 int start = h1*60+m1; int end = h2*60+m2; if(start < 0) { start = h1 = m1 = 0; } else if(start >= MIN_INADAY) { start = MIN_INADAY - 1; h1 = 23; m1 = 59; } if(end < 0) { end = h2 = m2 = 0; } int tm = (start <= end) ? passMinutes(start, end) : passMinutes(start, MIN_INADAY) + passMinutes(0, end); cout << h1 << "時" << m1 << "分から" << h2 << "時" << m2 << "分までの時間" << endl; cout << (tm / 60) << "時間" << (tm % 60) << "分です" << endl; return 0; }
|

|