このディレクトリの索引
#  出典 :: ★★ Java の宿題ここで答えます Part 72 ★★ #387
#  【 課題  「西暦から元号への変換など」 
#   
#   日本では現在、年を表すために西暦と元号を両方使用している。 
#   そこで、ある西暦の年が、明治、大正、昭和、平成の元年(1年)から数えると何年目に当たるのかを表示するプログラムを作成して提出しなさい。 
#   さらに、その年が夏期オリンピックの年であるかどうかをしらべて表示する部分も追加しなさい。 
#   
#   
#  【 形態 】Javaアプリケーション(main()で開始 
#  【 GUI  】無制限 
#  【 期限 】2012/10/18 23:59までに提出  
#  【 Ver  】v1.4系  
#  【 補足 】今日中の課題ということで、非常にせっぱつまっております。 
#        Verについてですが、授業で取り扱っている教科書がv1.4系を 
#        中心に解説するということで、とりあえずという感じです。 
#        また、教授のお言葉で、完璧にこなせる人も、洒落たマネはせず、 
#        初心に戻って基礎を大切にしてやってくださいとのご指示がありました。 
#        どうか助けてください。 
# 
# 

'日本では現在、年を表すために西暦と元号を両方使用している。 
そこで、ある西暦の年が、明治、大正、昭和、平成の元年(1年)から数えると何年目に当たるのかを表示するプログラムを作成して提出しなさい。 
さらに、その年が夏期オリンピックの年であるかどうかをしらべて表示する部分も追加しなさい。'(_西暦の年) :-
 'ある西暦の年が、明治、大正、昭和、平成の元年(1年)から数えると何年目に当たるのかを表示する。さらに、その年が夏期オリンピックの年であるかどうかをしらべて表示する'(_西暦の年).

 'ある西暦の年が、明治、大正、昭和、平成の元年(1年)から数えると何年目に当たるのかを表示する。さらに、その年が夏期オリンピックの年であるかどうかをしらべて表示する'(_西暦の年) :-
'明治、大正、昭和、平成の元年(1年)から数えると何年目に当たるのかを表示する。'(_西暦の年,_元号,_何年目),
さらに.
 'ある西暦の年が、明治、大正、昭和、平成の元年(1年)から数えると何年目に当たるのかを表示する。さらに、その年が夏期オリンピックの年であるかどうかをしらべて表示する'(_西暦の年) :-
その年が夏期オリンピックの年であるかどうかをしらべて表示する(_西暦の年).

'明治、大正、昭和、平成の元年(1年)から数えると何年目に当たるのかを表示する。'(_西暦の年,_元号,_何年目) :-
'明治、大正、昭和、平成の元年(1年)から数えると何年目に当たるのかを'(_西暦の年,_元号,_何年目),
表示する(_元号,_何年目).

'明治、大正、昭和、平成の元年(1年)から数えると何年目に当たるのかを'(_西暦の年,_元号,_何年目) :-
元号の始まる年(_元号,_元号の始まる年),
_何年目 is _西暦の年 - _元号の始まる年 + 1.

表示する(_元号,_何年目) :-
'_何年目が正の整数の時はそのまま表示する'(_元号,_何年目).
表示する(_元号,_何年目) :-
'_何年目が零または負の整数の場合は_何年目を一減じたものの絶対値を取って何年前かを表示する'(_元号,_何年目).

'_何年目が正の整数の時はそのまま表示する'(_元号,_何年目) :-
'_何年目が正の整数の時は'(_何年目),
そのまま表示する(_元号,_何年目).

'_何年目が正の整数の時は'(_何年目) :-
_何年目 > 0.

そのまま表示する(_元号,_何年目) :-
writef('\n%w元年から%w年目,',[_元号,_何年目]).

'_何年目が零または負の整数の場合は_何年目を一減じたものの絶対値を取って何年前かを表示する'(_元号,_何年目) :-
'_何年目が零または負の整数の場合は_何年目を一減じたものの絶対値を取って'(_何年目,_何年前),
何年前かを表示する(_元号,_何年前).

'_何年目が零または負の整数の場合は_何年目を一減じたものの絶対値を取って'(_何年目,_何年前) :-
'_何年目が零または負の整数の場合は'(_何年目),
'_何年目を一減じたものの絶対値を取って'(_何年目,_何年前).

'_何年目が零または負の整数の場合は'(_何年目) :-
_何年目 =< 0.

'_何年目を一減じたものの絶対値を取って'(_何年目,_何年前) :-
_何年前 is abs(_何年目 - 1).

何年前かを表示する(_元号,_何年前) :-
writef('\n%w元年から%w年前,',[_元号,_何年前]).

さらに :- fail.

その年が夏期オリンピックの年であるかどうかをしらべて表示する(_西暦の年) :-
'その年が夏期オリンピックの年である場合、開催都市を表示する'(_西暦の年).
その年が夏期オリンピックの年であるかどうかをしらべて表示する(_西暦の年) :-
その年は夏期オリンピックの年ではない場合その旨表示する(_西暦の年).

'その年が夏期オリンピックの年である場合、開催都市を表示する'(_西暦の年) :-
その年は夏期オリンピックの年である(_西暦の年,_開催都市),
writef('\nその年には%wオリンピックが開催されました。\n',[_開催都市]).

その年は夏期オリンピックの年である(_西暦の年,_開催都市) :-
夏期オリンピック(_西暦の年,_開催都市).

その年は夏期オリンピックの年ではない場合その旨表示する(_西暦の年) :-
その年は夏期オリンピックの年ではない(_西暦の年),
writef('\nその年には夏期オリンピックは開催されていません。\n').

その年は夏期オリンピックの年ではない(_西暦の年) :-
\+(夏期オリンピック(_西暦の年,_)).

元号の始まる年(明治,1868).
元号の始まる年(大正,1912).
元号の始まる年(昭和,1926).
元号の始まる年(平成,1989).

夏期オリンピック(1896,アテネ).
夏期オリンピック(1900,パリ).
夏期オリンピック(1904,セントルイス).
夏期オリンピック(1906,アテネ).
夏期オリンピック(1908,ロンドン).
夏期オリンピック(1912,ストックホルム).
夏期オリンピック(1920,アントワープ).
夏期オリンピック(1924,パリ).
夏期オリンピック(1928,アムステルダム).
夏期オリンピック(1932,ロサンジェルス).
夏期オリンピック(1936,ベルリン).
夏期オリンピック(1948,ロンドン).
夏期オリンピック(1952,ヘルシンキ).
夏期オリンピック(1956,メルボルン).
夏期オリンピック(1960,ローマ).
夏期オリンピック(1964,東京).
夏期オリンピック(1968,メキシコシチー).
夏期オリンピック(1972,ミュンヘン).
夏期オリンピック(1976,モントリオール).
夏期オリンピック(1980,モスクワ).
夏期オリンピック(1984,ロサンジェルス).
夏期オリンピック(1988,ソウル).
夏期オリンピック(1992,バルセロナ).
夏期オリンピック(1996,アトランタ).
夏期オリンピック(2000,シドニー).
夏期オリンピック(2004,アテネ).
夏期オリンピック(2008,北京).
夏期オリンピック(2012,ロンドン).
夏期オリンピック(2016,リオデジャネイロ).