このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1349527750/267
#  [1] 授業単元:C言語(配列) 
#  [2] 問題文(含コード&リンク):http://ime.nu/codepad.org/KOT3NBPz 
#  
#  キーボードから3×3の行列の数値を入力し行列のランク(階数)を出力するプログラムを作成せよ

'キーボードから3×3の行列の数値を入力し行列のランク(階数)を出力するプログラムを作成せよ' :-
        'キーボードから3×3の行列の数値を入力し'(_行列),
        '行列のランク(階数)を出力する'(_行列).

'キーボードから3×3の行列の数値を入力し'(_行列) :-
        length(_行列,3),
        findall(L,(
                    member(L,_行列),
                    length(L,3),
                    行を入力(L)),
               _行列).

行を入力([]).
行を入力([_数値|R]) :-
        数を得る(数値,_数値),
        行を入力(R).

'行列のランク(階数)を出力する'(_行列) :-
        ガウス行列に変形(_行列,_ガウス行列),
        '要素に零以外の数が存在する行数'(_ガウス行列,_ランク),
        writef('行列 %t のランクは %t です\n',[_行列,_ランク]).

'要素に零以外の数が存在する行数'(_行列,_ランク) :-
        count((member(L,_行列),零以外の要素が存在する行(L)),_ランク).

零以外の要素が存在する行(_行) :-
        member(_要素,_行),
        \+(_要素 = 0),
        \+(_要素 = 0.0),!.