このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1288531658/781
#  こんにちは。基礎クラスで恐縮ですがよろしくお願いします。 
#  [1] 授業単元: C基礎 
#  [2] 問題文(含コード&リンク):   
#  問題3 キーボードから正の整数を1つ入力し、その数を二進数に変換して出力するプログラム。 
#  forを用いること。表示形式は任意で正しければよい。 
#  例えば、2で割ったあまりと商の値によって下の桁のビットから求めるなど。 
#   [3.1]  Linux 
#   [3.2] gcc 
#   [3.3] C言語 
#  [4] 期限:11月15日 
#  [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)  
#  習ったのはfor文までで、配列などはまだ使ってません。 
# 
# 

'キーボードから正の整数を1つ入力し、その数を二進数に変換して出力する' :-
        正の整数を1つ入力し(_正の整数),
        その数を二進数に変換して(_正の整数,_二進数ならび),
        concat_atom(_二進数ならび,_二進数表示),
        出力する(_二進数表示).

正の整数を1つ入力し(_正の整数) :-
        get_line(Line),
        正の整数の入力診断(Line,_正の整数),!.
正の整数を1つ入力し(_正の整数) :- 正の整数を1つ入力し(_正の整数).

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

その数を二進数に変換して(_正の整数,_二進数ならび) :-
        その数を二進数に下位ビットから変換して(_正の整数,L),
        reverse(L,_二進数ならび).

その数を二進数に下位ビットから変換して(0,[]) :- !.
その数を二進数に下位ビットから変換して(N1,[Mod|R]) :-
        N2 is N1 // 2,
        Mod is M mod 2,
        その数を二進数に変換して(N2,R).