Не могу найти ошибку
uses crt;
var a:array [1..100,1..100] of real;
x:array[1..100] of real;
i,j,k,n:integer;
d,c,h:real;
begin
write('n=');
read
;
for i:=1 to n do begin
for j:=1 to n+1 do
a[i,j]:=random(10);
end;
for i:=1 to n do begin
for j:=1 to n+1 do begin
write(a[i,j],' ');
end;
end;
for i:=1 to n-1 do begin
if a[i,i]<>0 then begin
for j:=i+1 to n do begin
d:=a[j,i]/a[i,i];
for k:=1 to n+1 do
a[j,k]:=a[j,k]-d*a[i,k];
end;
end
else
for j:=i+1 to n do begin
if a[j,i]<>0 then begin
for k:=1 to n+1 do begin
c:=a[i,k];
a[i,k]:=a[j,k];
a[j,k]:=c;
end;
d:=a[j,i]/a[i,i];
for k:=1 to n+1 do
a[j,k]:=a[j,k]-d*a[i,k];
end;
end;
end;
for i:=1 to n do begin
for j:=1 to n+1 do begin
write(a[i,j],' ');
end;
end;
x[n]:=a[n,n+1]/a[n,n];
for i:=n-1 downto 1 do begin
h:=0;
for j:=i+1 to n do h:=h+x[j]*a[i,j];
x:=(a[i,n+1]-h)/a[i,i]; end;
write('Корни уравнения');
for i:=1 to n do writeln('x(',i,')=',x:0:0);
end.
Вроде надо ещё сделать проверку, чтобы главная диагональ не была равна 0.
uses crt;
var a:array [1..100,1..100] of real;
x:array[1..100] of real;
i,j,k,n:integer;
d,c,h:real;
begin
write('n=');
read
for i:=1 to n do begin
for j:=1 to n+1 do
a[i,j]:=random(10);
end;
for i:=1 to n do begin
for j:=1 to n+1 do begin
write(a[i,j],' ');
end;
end;
for i:=1 to n-1 do begin
if a[i,i]<>0 then begin
for j:=i+1 to n do begin
d:=a[j,i]/a[i,i];
for k:=1 to n+1 do
a[j,k]:=a[j,k]-d*a[i,k];
end;
end
else
for j:=i+1 to n do begin
if a[j,i]<>0 then begin
for k:=1 to n+1 do begin
c:=a[i,k];
a[i,k]:=a[j,k];
a[j,k]:=c;
end;
d:=a[j,i]/a[i,i];
for k:=1 to n+1 do
a[j,k]:=a[j,k]-d*a[i,k];
end;
end;
end;
for i:=1 to n do begin
for j:=1 to n+1 do begin
write(a[i,j],' ');
end;
end;
x[n]:=a[n,n+1]/a[n,n];
for i:=n-1 downto 1 do begin
h:=0;
for j:=i+1 to n do h:=h+x[j]*a[i,j];
x:=(a[i,n+1]-h)/a[i,i]; end;
write('Корни уравнения');
for i:=1 to n do writeln('x(',i,')=',x:0:0);
end.
Вроде надо ещё сделать проверку, чтобы главная диагональ не была равна 0.