このディレクトリの索引 http://hibari.2ch.net/test/read.cgi/tech/1322562648/42 # [1] 授業単元:楽しいC(ポインタと関数) # [2] 問題文(含コード&リンク): # 秒数を与えると,それが何日何時間何分何秒にあた # るかを計算する関数 # calctime(long sec, int *dp, int *hp, int *mp, # int *sp); # を作成せよ.例えば # calctime(100000, &d, &h, &m, &s); # として呼び出すとd=1, h=3,m=46,s=40 となる # (100,000 秒=1 日3 時間46 分40 秒).以下の実行例の # ように,関数の動作を確認できるmain 関数も作成すること. # (出力例) # 秒数を入力してください:100000 # 100000 秒= 1 日3 時間46 分40 秒 # 秒数を入力してください:3725 # 3725 秒= 0 日1 時間2 分5 秒 # '秒数を与えると,それが何日何時間何分何秒にあたるかを計算する' :- 秒数の入力(_秒数), '秒数を与えると,それが何日何時間何分何秒にあたるかを計算する'(_秒数,_日数,_時間,_分,_秒), '0は表示せず日数,時間,分,秒を表示する'(_日数,_時間,_分,_秒). 秒数の入力(_秒数) :- write('秒数を入力してください : '), get_line(Line), 秒数の入力診断(Line,_秒数),!. 秒数の入力(_秒数) :- 秒数の入力(_秒数). 秒数の入力診断(Line,_秒数) :- atom_to_term(Line,_秒数,_), integer(_秒数), _秒数 >= 0,!. 秒数の入力診断(Line,_秒数) :- writef('入力された %t からは適切な秒数が得られません。再入力をお願いします。\n',[Line]), fail. '秒数を与えると,それが何日何時間何分何秒にあたるかを計算する'(_秒数,_日数,_時間,_分,_秒) :- _日数 is _秒数 // 86400, _余り_1 is _日数 mod 86440, _時間 is _余り_1 // 3600, _余り_2 is _余り_1 mod 3600, _分 is _余り_2 // 60, _秒 is _余り_2 mod 60. '0は表示せず日数,時間,分,秒を表示する'(_日数,_時間,_分,_秒) :- append(_,[[N,S]|R],[[_日数,日],[_時間,時間],[_分,分],[_秒,秒]]), 表示(N,S), R = [], write('\n'). 表示(0,_) :- !. 表示(N,S) :- writef('%t%t ',[N,S]).