このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1337692704/437
#  【 形態 】Javaアプリケーション  
#  【 期限 】一週間後まで  
#  【 Ver  】java version "1.7.0_03"  
#  【 課題 】2次元配列、1次元配列を使って科目得点表を表示するプログラムを作成する。  
#        平均点に関しては、プログラム内で求めて表示する。また、配列の要素は必要な個数分だけにする。  
#          
#            国語  数学  英語  社会  理科  平均  
#        青木   50   90   76           72  
#        木村   80   46   84   67       69  
#        山田   30   69   72   89   56   63  
#   
#        科目名、生徒はStringクラスの1次元配列、点数はint型の2次元配列で初期化。 
# 
#  【 補足 】点数、平均点の表示は何とか出来たのですが、表にしようとすると、青木の社会、理科、木村の理科の部分が足りず、ArrayIndexOutOfBoundsExceptionが発生してしまいます。 
# 

'2次元配列、1次元配列を使って科目得点表を表示するプログラムを作成する。  
平均点に関しては、プログラム内で求めて表示する。また、配列の要素は必要な個数分だけにする。  
        
          国語  数学  英語  社会  理科  平均  
      青木   50   90   76           72  
      木村   80   46   84   67       69  
      山田   30   69   72   89   56   63  
 
科目名、生徒はStringクラスの1次元配列、点数はint型の2次元配列で初期化。' :-            科目名ならび(_科目名ならび),
        生徒ならび(_生徒ならび),
        得点ならび(_得点ならび),
        科目得点表を表示する(_得点ならび,_生徒ならび,_得点ならぴ).

科目名ならび([国語,数学,英語,社会,理科]).

生徒ならび([青木,木村,山田]).

得点ならび([[50,90,76,[],[],72],[80,46,84,67,[],69],[30,69,72,89,56,63]]).

科目得点表を表示する(_科目ならび,_生徒ならび,_得点ならぴ) :-
        科目見出し(_科目ならび),
        行表示(_生徒ならび,_得点ならび).

科目見出し(_科目ならび) :-
        write('        '),
        append(_,[A|R],_科目ならび),
        幅は8桁で表示(A),
        R = [],
        write('\n').

行表示([],[]).
行表示([_生徒|R1],[_得点ならび|R2]) :-
        writef('        %t',[_生徒]),
        得点列を表示する(_得点ならび),
        行表示(R1,R2).

得点列を表示する(_得点ならび) :-
        append(_,[N|R],_得点ならび),
        幅は8桁で表示(N),
        R = [],
        write('\n').

幅は8桁で表示(A) :-
        atom(A),
        文字列の末尾を空白で埋める(A,S),
        writef('%t',[S]).
幅は8桁で表示(N) :-
        integer(N),
        整数の頭部を空白で埋める(N,S),
        writef('%t',[S]).

文字列の末尾を空白で埋める(A,S) :-
        length(L,8),
        atom_chars(A,L1),
        append(L1,L2,L),
        all(L2,' '),
        atom_chars(S,L2).

整数の頭部を空白で埋める(A,S) :-
        length(L,8),
        number_chars(A,L2),
        append(L1,L2,L),
        all(L1,' '),
        atom_chars(S,L2).