% Cramer-szabály
function x = cramer(A,b)
%%% az input ellenõrzése:
[n, m] = size(A);
[nb, mb] = size(b);
x = nan(n,1);
if (n ~= m) | (mb ~= 1) | (n ~= nb)
  error("A és/vagy b dimenziója nem megfelelõ!")
endif

kisdet = 10^(-10);   % önkényesen fölvett konstans
detA = det(A);
if abs(detA) <= kisdet
  error("abs(det(A)) (majdnem) 0!") 
endif

for k = 1:n
    a_k    =  A(:,k);         % elmentjük az A k-dik oszlopát
    A(:,k) = b;
    x(k)   = det(A)/detA;
    A(:,k) = a_k ;             % visszaállítjuk az A k-dik oszlopát
endfor

endfunction