このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1286978599/843
#  [1] 授業単元:プログラミング演習  
#  [2] 問題文(含コード&リンク)  
#  問題2 
#  桁数を指定した書式指定(%s、%d、%f)とprintf()関数を用いて、下記の一覧表を表示するプログラムを作成しなさい。 
#  【表示する表】 
#       商品A     商品B    商品C 
#  数量   0000012  0000345   0006789 
#  重量   1.234     543.210      12.345 
#  *文字列、整数値や実数値の桁数を指定する方法に注意しなさい。 
#  *表の枠線は必要ありません。各列の先頭が揃っている必要があります。 

'桁数を指定した書式指定(%s、%d、%f)とprintf()関数を用いて、下記の一覧表を表示する' :-
        下記の一覧表(A1,A2,A3,A4),
        行の表示([A1,A2,A3,A4]).
        fail.
'桁数を指定した書式指定(%s、%d、%f)とprintf()関数を用いて、下記の一覧表を表示する'.

行の表示([' '|R]) :-
        printf('%-9s %-12s %-12s %-12s\n',[' '|R]).
行の表示([数量|R]) :-
        printf('%-9s %-012d %-012d %-012d\n',[数量|R]).
行の表示([重量|R]) :-
        printf('%-9s %-12.3f %-12.3f %-12.3f\n',[重量|R]).

下記の一覧表(' ',商品A,商品B,商品C).
下記の一覧表(数量,12,345,6789).
下記の一覧表(重量,1.234,543.210,12.345).

printf(_パターン,_値ならび) :-
        write_formatted(_パターン,_値ならび).

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

'桁数を指定した書式指定(%s、%d、%f)とprintf()関数を用いて、下記の一覧表を表示する' :-
        下記の一覧表(S),
        split(S,['\n'],[_見出し行|_行ならび]),
        見出し行の表示(_見出し行),
        行の表示(_行ならび).

見出し行の表示(_見出し行) :-
        split(_見出し行,[' ',' '],L),
        printf('%-9s %-12s %-12s %-12s\n',[' '|L]).

行の表示([]) :- !.
行の表示([_行|R]) :-
        split(_行,[' ',' '],_値ならび),
        表示形式の選択して表示(_値ならび),
        行の表示(R).

表示形式を選択して表示([数量|R]) :-
        printf('%-9s %-012d %-012d %-012d\n',[数量|R]).
表示形式を選択して表示([重量|R]) :-
        printf('%-9s %-12.3f %-12.3f %-12.3f\n',[重量|R]).

下記の一覧表('          商品A        商品B        商品C\n数量      0000012    0000345      0006789 \n重量      1.234        543.210        12.345\n').

printf(_パターン,_値ならび) :-
        write_formatted(_パターン,_値ならび).