10/01/15 22:29:17
>>276
% Prolog
main :-
催促付き整数入力('ひとつ対象となる整数を入力してください : ',_整数),
write('1.数値nを一つ入力し、各桁の和を求めよ。(123→6)\n'),
write('2.数値nを反転した値を表示せよ。(123→321)\n'),
催促付き整数入力('1-2を選択してください : ',_整数2),
目標選択(_整数2,_整数).
目標選択(1,_数値n) :-
'数値nを一つ入力し、各桁の和を求める'(_数値n,_各桁の和),
write_formatted('各桁の和は%tです\n',[_各桁の和]).
目標選択(2,_数値n) :- '数値nを反転した値'を表示する'(_数値n).
'数値nを一つ入力し、各桁の和を求める'(_数値n,_各桁の和) :-
number_codes(_数値n,L),
findsum(U,(member(A,L),U is A-48),_各桁の和).
'数値nを反転した値'を表示する'(_数値n) :-
'数値nを反転した値'(_数値n,_数値nを反転した値),
write_formatted('数値を反転した値は%tです\n',[_数値nを反転した値]).
'数値nを反転した値'(_数値n,_数値nを反転した値) :-
number_codes(_数値n,L1),
reverse(L1,L2),
number_codes(_数値nを反転した値,L2).