if a [n, n] = 0 then {Якщо останній діагональний елемент дорівнює нулю}
if b [n] = 0 then {і останній вільний коефіцієнт дорівнює нулю, то}
pr: = 1 {система не має рішень, інакше, якщо останній}
else pr: = 2 {вільний коефіцієнт не нульовий, то система має}
else {нескінченну безліч рішень}
begin {Якщо останній діагональний елемент не нульовий}
pr: = 0; {переходимо до визначення рішень СЛАР.}
SetLength (x, n); [n]: = b [n]/a [n, n]; i: = n downto 1 do: = 0; j: = i +1 to n do: = s + a [i, j] * x [j]; [i]: = (b [i]-s)/a [i, i];;; opredelitel (a: matrica; n: integer): real; i, j, k, r: integer;, m, c, det: real;: = 1; k: = 1 to n do
max: = abs (a [k, k]); {нехай діагональний елемент - максимальний}
r: = k; {Номер рядка, в якій він знаходиться}
for i: = k +1 to n doabs (a [i, k])> max then {Якщо в рядку знайдеться елемент, що перевищує}
max: = abs (a [i, k]); {максимум, зберегти його, а} p>
r: = i; {також номер рядка, в якій він знаходиться}
end; r <> k then det: =-det; j: = 1 to n do {Поточний рядок міняється місцями зі }
begin {рядком містить максимальний елемент}
c: = a [k, j]; [k, j]: = a [r, j]; [r, j]: = c; p>
end;
{приведення розширеної матриці до ступінчастого вигляду}
for i: = k +1 to n do: = a [i, k]/a [k, k]; j: = k to n do [i, j]: = a [i, j]-m * a [k, j];;; i: = 1 to n do: = det * a [i, i];: = det;; obrmatrica (a: matrica; n: integer; h: matrica; var pr: byte); i, j: integer;: byte;, b: massiv; i: = 1 to n do
for j: = 1 to n do {формування вектора вільних членів}
if i = j then [j]: = 1b [j]: = 0; (a, b, n, x, pr1); {Рішення СЛАР методом Гауса}
if pr1 <> 0 then: = 1;; beginj: = 1 to n do {формування зворотної матриці}
h [j, i]: = x [j];: = 0; end;;;.