C/C++の宿題片付けます 126代目 at TECH
[2ch|▼Menu]
321:デフォルトの名無しさん
09/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;
}


次ページ
続きを表示
1を表示
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5329日前に更新/150 KB
担当:undef