このディレクトリの索引

# 出典 :: C/C++の宿題片付けます 161代目 #984 # [1] 授業単元:プログラミング応用 # [2] 問題文(含コード&リンク):西暦を年号に変換するプログラムを作成する。 # ただし、入力できるのは、1868年以降からであり、2008年以降も平成とする。 # 明治元年、大正元年、昭和元年、平成元年は、各々、1868年,1912年,1926年,1989年である。 # 下記を参考にプログラムを作成しなさい。 # int gannen[]={1989, 1926, 1912, 1868}; # char nengou[][8]={"heisei", "syouwa", "taisyou", "meiji"}; # '西暦を年号に変換するプログラムを作成する。 ただし、入力できるのは、1868年以降からであり、2008年以降も平成とする。 明治元年、大正元年、昭和元年、平成元年は、各々、1868年,1912年,1926年,1989年である。'(_西暦,_年号) :- 'ただし、入力できるのは、1868年以降からであり、'(_西暦), '明治元年、大正元年、昭和元年、平成元年は、各々、1868年,1912年,1926年,1989年である。'(_元号ならび,_元年の西暦ならび), 西暦を年号に変換する(_西暦,_元号ならび,_元年の西暦ならび,_年号). 'ただし、入力できるのは、1868年以降からであり、'(_西暦) :- _西暦 >= 1868. '明治元年、大正元年、昭和元年、平成元年は、各々、1868年,1912年,1926年,1989年である。'([明治,大正,昭和,平成],[1868,1912,1926,1989]). 西暦を年号に変換する(_西暦,_元号ならび,_元年の西暦ならび,_年号) :- 西暦から元号と元年の西暦を得る(_西暦,_元号ならび,_元年の西暦ならび,_元号,_元年の西暦), 年号を得る(_西暦,_元号,_元年の西暦,_年号). 西暦から元号と元年の西暦を得る(_西暦,_元号ならび,_元年の西暦ならび,_元号,_元年の西暦) :- 元号候補とその元年の西暦を得る(_元号ならび,_元年の西暦ならび,_元号,_元年の西暦), 西暦が存在する元号の元年の西暦(_西暦,_元年の西暦ならび,_元年の西暦). 元号候補とその元年の西暦を得る(_元号ならび,_元年の西暦ならび,_元号,_元年の西暦) :- nth1(_nth1,_元号ならび,_元号), nth1(_nth1,_元年の西暦ならび,_元年の西暦). 西暦が存在する元号の元年の西暦(_西暦,_元年の西暦ならび,_元年の西暦) :- append(L1,[_元年の西暦|L2],_元年の西暦ならび), forall(member(N,L1),N < _西暦), forall(member(N,L2),N > _西暦). 年号を得る(_西暦,_元号,_元年の西暦,_年号) :- N is _西暦 - _元年の西暦 + 1, 和年表現(N,_和年), atomic_list_concat([_元号,_和年],_年号). 和年表現(N,_和年) :- '二十未満の和年表現'(N,_和年). 和年表現(N,_和年) :- '二十以上の和年表現'(N,_和年). '二十未満の和年表現'(N,_和年) :- between(1,19,N), nth0(N,['',元年,二年,三年,四年,五年,六年,七年,八年,九年,十年,十一年,十二年,十三年,十四年,十五年,十六年,十七年,十八年,十九年],_和年). '二十以上の和年表現'(N,_和年) :- N >= 20, '二十以上の十の位、一の位'(N,_十の位,_一の位), atomic_list_concat([_十の位,十,_一の位,年],_和年). '二十以上の十の位、一の位'(N,_十の位,_一の位) :- N_1 is N // 10, N_2 is N mod 10, nth0(N_1,['',一,二,三,四,五,六,七,八,九],_十の位), nth0(N_2,['',一,二,三,四,五,六,七,八,九],_一の位).