C/C++の宿題のまとめ@Wiki

時刻差を求める

最終更新:

匿名ユーザー

- view
管理者のみ編集可
177 :デフォルトの名無しさん :2005/11/02(水) 13:16:38
[1] 授業単元:計算機概論
[2] 問題文:
h1時m1分s1秒からh2時m2分s2秒までは何時何分何秒になるかを計算するプログラムを作ってみましょう。
最も簡単な方法は、全部を秒に換算して引き算し、その結果を時分秒に戻せばよいのですが、
今回はif文の練習ですから
    s2からs1を引いてみる
    もし負になるならば60を加え、m2から1を引く
    m2からm1を引いてみる
    もし負になるならば60を加え、h2から1を引く
といった手順で計算してみてください。

また、始めの時間より終わりの時間のほうが早い場合はエラーメッセージを表示してください。

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ(バージョン):わかりません
 [3.3] 言語:C
[4] 期限:11/8まで
[5] その他の制限:「整数の計算と入出力」「実数の計算と出入力」だけ習いました。

ほんと初歩の初歩で申しわけありません。ド文系なものでw一応2時間以上考えたんですけどうまくいかなくて・・・。 よろしくお願いします。


178 :デフォルトの名無しさん :2005/11/02(水) 13:36:39
int h1, m1, s1 ;
int h2, m2, s2 ;
int h3, m3, s3 ; // 結果格納用

// 中略 適当にh1 m1 s1 h2 m2 s2 に設定する

s3 = s2 - s1 ;
if ( s3 < 0 ) {
s3 += 60 ;
--m2 ;
}
m3 = m2 - m1 ;
if ( m3 < 0 ) {

179 :178:2005/11/02(水) 13:39:04
すまん、途中で送信してもうた

int h1, m1, s1 ;
int h2, m2, s2 ;
int h3, m3, s3 ; // 結果格納用

// 中略 適当にh1 m1 s1 h2 m2 s2 に設定する

s3 = s2 - s1 ;
if ( s3 < 0 ) {
s3 += 60 ;
--m2 ;
}
m3 = m2 - m1 ;
if ( m3 < 0 ) {
m3 += 60 ;
--h2 ;
}
h3 = h2 - h1 ;
if ( h3 < 0 ) {
printf( "エラー\n") ;
}

180 :177:2005/11/02(水) 13:45:57
>>178-179
ありがとうございます。

一つ質問なんですが、h3=0のときも、m3<0だったりしたらエラーになると思うんですが、どうなんでしょうか?

181 :178:2005/11/02(水) 13:49:47
>>180
なりません。
m3<0の時はif(m3<0)の箇所でh2からあらかじめ1引いてるので。

182 :デフォルトの名無しさん :2005/11/02(水) 13:56:39
>>181
なるほど。理解しました。ありがとうございます。
目安箱バナー