このディレクトリの索引
#  出典: C/C++言語の宿題片付けます 132代目 #354 
#  [1] 授業単元: プログラミング実習 
#  [2] 問題文(含コード&リンク): 
#  (1)http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10173.txt 
#  [1] 授業単元: プログラミング実習 
#  [2] 問題文(含コード&リンク): 
#  (1)http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10173.txt 
# 実行結果が次のようになるように、九九の表を、for文の二重ループを用いて作成しなさい。 
# 
# ***table of kuku *** 
# 
#  |  1  2  3  4  5  6  7  8  9 
# ----------------------------- 
# 1|  1  2  3  4  5  6  7  8  9 
# 2|  2  4  6  8 10 12 14 16 18 
# 3|  3  6  9 12 15 18 21 24 27 
# 4|  4  8 12 16 20 24 28 32 36 
# 5| 
# 省略 
#  | 
#  | 
# 9|  9 18 27 36 45 54 63 72 81 


九九表示 :-
        write(' |  1  2  3  4  5  6  7  8  9\n-----------------------------\n'),
        九九表示(1,1).

九九表示(9,10) :-
        '行が9の時、列が10になったら改行して終了する',!.
九九表示(M,10) :-
        列が10になったら行を1増やして列を1に戻す(M).
九九表示(M,1) :-
        一列目を表示する時は行見出しを先行する(M).
九九表示(M,N) :-
        '二列目以降はM * Nの乗算結果を表示'(M,N).

'行が9の時、列が10になったら改行して終了する' :-
         nl.

列が10になったら行を1増やして列を1に戻す(M) :-
        nl,
        succ(M,M2),
        九九表示(M2,1).

一列目を表示する時は行見出しを先行する(M) :-
        writef('%t|%2r ',[M,M]),
        九九表示(M,2).

'二列目以降はM * Nの乗算結果を表示'(M,N) :-
        _乗算結果 is M * N,
        writef('%2r ',[_乗算結果]),
        succ(N,N2),
        九九表示(M,N2).