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;;;.