このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1284632294/921
#  質問にきましたお邪魔します。 
#  [1] Cプログラミング 
#  [2] 問題文(含コード&リンク): 数問あるのでリンクからお願いします。 
#  http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10941.txt 
#  
# 問5.ある地点a , b, cの12:00、0:00までの各12時間の降水量[mm]を以下のような表形式で、各時刻の降水量、平均降水量
# を画面に表示するプログラム。
# \t タブを用いて列をあわせ、数値は小数点以下一桁にすること。
# stateの欄は各地点の合計降水量が10[mm]未満の場合は「雨」、10[mm]以上の場合は「大雨」と表示する。
# 
# 	a	b	c	Average
# 0:00	1.0	2.5	1.5	1.6
# 12:00	11.0	5.5	15.0	10.5
# state	大雨	雨	大雨
# 

'ある地点a , b, cの12:00、0:00までの各12時間の降水量[mm]を以下のような表形式で、各時刻の降水量、平均降水量を画面表示' :-
        findall([_時刻,_aの降水量,_bの降水量,_cの降水量],(
                    append(_,[_時刻|R],[12:00,13:00,14:00,15:00,16:00,17:00,18:00,19:00,20:00,21:00,22:00,23:00,0:00]),
                    降水量(a,_時刻,_aの降水量),
                    降水量(b,_時刻,_bの降水量),
                    降水量(c,_時刻,_cの降水量)),
                LL1),
        時刻を取り除く(LL1,LL2),
        各行の平均を得る(LL2,_各行の平均ならび),
        置換(LL1,LL3),
        加算(LL3,_各列の合計ならび),
        雨量判定(_各列の合計ならび,_雨量判定ならび),
        降水量の表示(LL1,_各行の平均ならび,_雨量判定ならび),!.

時刻を取り除く([],[]) :- !.
時刻を取り除く([[_|L]|R1],[L|R2]) :-
        時刻を取り除く(R1,R2).

各行の平均を得る([],[]) :- !.
各行の平均を得る([_行|R1],[_平均|R2]) :-
        avg(_行,_平均),
        各行の平均を得る(R1,R2).

雨量判定([],[]) :- !.
雨量判定([V|R1],[大雨|R2]) :-
        V >= 10.0,
        雨量判定(R1,R2),!.
雨量判定([V|R1],[雨|R2]) :-
        V < 10.0,
        雨量判定(R1,R2),!.

降水量の表示([],[],_雨量判定ならび) :-
        write_formatted('state,%.1f.1f,%.1f,%.1f\n',_雨量判定ならび),!.
降水量の表示([L|R1],[_行平均|R2],_雨量判定ならび) :-
        append(L,_行平均,L2),
        write_formatted('%.1f.1f,%.1f,%.1f\n',L2),
        降水量の表示(R1,R2,_雨量判定ならび).