program gauss;

{$APPTYPE CONSOLE}

uses
SysUtils;

Type
Macierz=array[1..3] of array[1..3] of real;
Pkt=array[1..3] of real;
Wynik=array[1..3] of array[1..3] of real;
var
mm:Macierz;
P:Pkt;
AA:Wynik;
n:integer;

Procedure dane(var A:Macierz; var n:integer);
var
w,k:integer;
begin
repeat
write('Podaj ilosc wierszy i kolumn: ');
readln(n);
until (n>1) and (n<4);
for w:=1 to n do
begin
for k:=1 to n+1 do
begin
write('Podaj wspolrzedne wyrazu A[',w,'',k,']= ');
readln(A[w,k]);
end;
end;
writeln('Twoja macierz to: ');

end;
Procedure wyswietl(var A:Macierz);
var
w,k:integer;
begin
for w:=1 to n do
begin
for k:=1 to n+1 do
begin
if k>n then
write(' ; ',A[w,k]1,' ')
else
begin
write(A[w,k]1,' ');
end;
end;
writeln;
writeln;
end;
end;
Procedure krok(var m:Macierz; n:integer);
var
w,k:integer;
begin
writeln(' Macierz po zmianach ');
for w:=1 to n do
begin
if w>=2 then
begin
P[w]:=m[w,1]/m[1,1];
for k:=1 to n+1 do
begin
m[w,k]:=m[w,k]-P[w]*m[1,k];
end;
writeln(' P[',w,']= ',P[w]1,' ');
end
else
end;
end;

Procedure obliczaniaX(m:Macierz; n:integer; var AA:Wynik);
begin
AA[n,n]:=m[n,n+1]/m[n,n];
AA[n-1,n-1]:=(m[n-1,n+1]-(m[n-1,n]*AA[n,n]))/m[n-1,n-1];
AA[n-2,n-2]:=(m[n-2,n+1]-(m[n-2,n-1]*AA[n-1,n-1]-(m[n-2,n]*AA[n,n])))/m[n-2,n-2];
write('X1= ',AA[n-2,n-2]1);
write('X2= ',AA[n-1,n-1]1);
write('X3= ',AA[n,n]1);
end;

begin
dane(mm,n);
wyswietl(mm);

if n>=2 then
begin
krok(mm,n);
wyswietl(mm);
end
else
begin
obliczaniaX(mm,n,AA);
readln;
end;
readln;
end.

Program do rozwiązywania równań liniowych metoda Gaussa.

U Góry podałem kod programu który sam napisałem. Ale mam dużo problemów jestem początkującym programista i potrzebuje porad lub poprawienia błędów:

  1. źle wczytuje dane do macierzy o 3 kolumnach i wierszach macierz powinna wyglądać tak:
    3 -2 3 | 1
    1.5 0 2.5 |-0.5
    1.5 -1 -1.5 |-2.5
    to są tez dane które wpisuje na początku. 4 wiersz powstaje z podanych wcześniej równań kolumna wyrazów wolnych. Po zamianach program ma zamienić na 0 wyrazy a[2,1], a[3,1], a[3,2] i zamienia ale wyrazy wolne się nie zgadzają.
  2. to na końcu programu oprócz macierzy po zamianach i punktów p wyświetlać ma wyniki procedury obliczania x

Proszę bardzo o szybka odpowiedź.