このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1284632294/803
#  [1] 授業単元:プログラミング実習  
#  [2] 問題文(含コード&リンク):入力された整数を一桁ずつ足してゆき、 
#  その合計を表示するプログラムを作成せよ。  
#  例: 
#  入力:123 
#  表示:1+2+3=6 
#  入力:45678 
#  表示:4+5+6+7+8=30 
#   
#  

'入力された整数を一桁ずつ足してゆき、その合計を表示する' :-
        整数を入力する(N),
        一桁ずつ足してゆき(N,S),
        合計を表示する(S).

整数を入力する(N) :-
        write('整数を入力してください : '),
        get_line(Line),
        診断(Line,N).
        atom_to_term(Line,N,_),
        N >= 0,!.
整数を入力する(N) :-
        整数を入力する(N).

診断(Line,N) :-
        atom_to_term(Line,N,_),
        integer(N),
        N >= 0,!.
診断(Line,N) :-
        write_formatted('入力された %t から0以上の整数が得られません\n',[Line]),
        write('再入力をお願いします\n'),
        fail.

一桁ずつ足してゆき(0,0) :- !.
一桁ずつ足してゆき(N,S) :-
        Mod is N mod 10,
        Div is N // 10,
        一桁ずつ足してゆき(Div,S1),
        S is S1 + Mod.

合計を表示する(S) :-
        write_formatted('合計は %t\n',[S]).