このディレクトリの索引

# 出典 :: C/C++の宿題片付けます 128代目 #275 # [1] 授業単元:C言語の基礎 # [2] 問題文:年(西暦)、月、日を入力し、入力した、日時の曜日及び、経過した # 日数を表示したプログラムを作成せよ。 :- op(450,xf,日後). '年(西暦)、月、日を入力し、入力した、日時の曜日及び、経過した日数を表示する。'(_日付,_曜日,N 日後) :- 基準日(_基準日,_基準曜日), 曜日(_基準日,_基準曜日,_日付,_曜日,N). 基準日(2009/07/01,水曜). 曜日(_日付1,_曜日1,_日付2,_曜日2,N) :- 曜日(_日付1,_曜日1,_日付2,_曜日2,0,N). 曜日(_日付,_曜日,_日付,_曜日,N,N) :- !. 曜日(_日付1,_曜日1,_日付2,_曜日2,N1,N) :- _日付1 @> _日付2, N2 is N1 - 1, '前日・今日'(_日付3,_曜日3,_日付1,_曜日1), 曜日(_日付3,_曜日3,_日付2,_曜日2,N2,N) . 曜日(_日付1,_曜日1,_日付2,_曜日2,N1,N) :- _日付1 @< _日付2, N2 is N1 + 1, '前日・今日'(_日付1,_曜日1,_日付3,_曜日3), 曜日(_日付3,_曜日3,_日付2,_曜日2,N2,N) . '前日・今日'(_前日の年/12/31,_前日の曜日,_年/1/1,_曜日) :- 一つ違い(_前日の年,_年), 曜日連鎖(_前日の曜日,_曜日),!. '前日・今日'(_年/2/29,_前日の曜日,_年/3/1,_曜日) :- うるう年(_年), 曜日連鎖(_前日の曜日,_曜日),!. '前日・今日'(_年/2/28,_前日の曜日,_年/3/1,_曜日) :- not(うるう年(_年)), 曜日連鎖(_前日の曜日,_曜日),!. '前日・今日'(_年/_前月/30,_前日の曜日,_年/_月/1,_曜日) :- 一つ違い(_前月,_月), 小の月(_前月), 曜日連鎖(_前日の曜日,_曜日),!. '前日・今日'(_年/_前月/31,_前日の曜日,_年/_月/1,_曜日) :- 一つ違い(_前月,_月), 大の月(_前月), 曜日連鎖(_前日の曜日,_曜日),!. '前日・今日'(_年/_月/_前日,_前日の曜日,_年/_月/_日,_曜日) :- 一つ違い(_前日,_日), 曜日連鎖(_前日の曜日,_曜日),!. 一つ違い(M,N) :- succ(M,N). 大の月(_大の月) :- member(_大の月,[1,3,5,7,8,10,12]). 小の月(_小の月) :- member(_小の月,[2,4,6,9,11]). うるう年(_年) :- 0 is _年 mod 400,!. うるう年(_年) :- 0 is _年 mod 100,!,fail. うるう年(_年) :- 0 is _年 mod 4,!. うるう年(_年) :- not(0 is _年 mod 4),fail. 曜日連鎖(月曜,火曜). 曜日連鎖(火曜,水曜). 曜日連鎖(水曜,木曜). 曜日連鎖(木曜,金曜). 曜日連鎖(金曜,土曜). 曜日連鎖(土曜,日曜). 曜日連鎖(日曜,月曜).