Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
18
Добавлен:
04.06.2015
Размер:
2 Кб
Скачать
☆
program Z2V2;
uses crt;
type
  mas = array[1..10] of real;
  mat = array[1..10] of mas;
var
  A,C: mat;
  b,x,b1: mas;
  d,s: real;
  i,n,j,k: integer;
  f: boolean;

procedure vvod(var n: integer; var b: mas; var A: mat);
var i,j: integer;
begin
     write('‚ўҐ¤ЁвҐ а §¬Ґа­®бвм n='); readln(n);
     writeln;
     writeln('‚ў®¤ ¬ ваЁжл A:');
     for i:=1 to n do
         for j:=1 to n do
         begin
              write('A[',i,',',j,']='); readln(A[i,j]);
         end;
     writeln;
     writeln('‚ў®¤ ўҐЄв®а  b:');
     for i:=1 to n do
     begin write('b[',i,']='); readln(b[i]); end;
     writeln;
     writeln('‚лў®¤ Ёб室­ле ¤ ­­ле:');
     writeln('Њ ваЁж  A:');
     for i:=1 to n do
     begin
          for j:=1 to n do
              write(A[i,j]:8:3);
          writeln;
     end;
     writeln('‚ҐЄв®а B:');
     for i:=1 to n do
         write(b[i]:8:3);
     writeln;
     readln;
end;

procedure vyvod(n: integer; x: mas);
var i,j: integer;
    r: mas;
begin
     writeln;
     writeln('‚лў®¤ ўҐЄв®а  x:');
     for i:=1 to n do
         write(x[i]:8:3);
     writeln;
     for i:=1 to n do
     begin
          r[i]:=0;
          for j:=1 to n do
              r[i]:=r[i]+A[i,j]*x[j];
     end;
     for i:=1 to n do
         r[i]:=r[i]-b[i];
     writeln;
     writeln('‚лў®¤ ўҐЄв®а -­Ґўп§ЄЁ r:');
     for i:=1 to n do
         write(r[i]:8:3);
     writeln;
     readln;
end;

begin
  clrscr;
  vvod(n,b,A);
  f:=true; k:=1; C:=A; b1:=b;
  while f do
  begin
       d:=A[k,k];
       for i:=k to n do
       begin
            for j:=k to n do
                A[i,j]:=A[i,j]/d;
            b[i]:=b[i]/d;
       end;
       for i:=1 to n do
         if i<>k then
         begin
            d:=-A[i,k];
            for j:=1 to n do
              A[i,j]:=A[i,j]+d*A[k,j];
            b[i]:=b[i]+d*b[k];
         end;
       k:=k+1; f:=false;
       for j:=1 to n do
           f:=f or (A[k,j]<>0)
  end;
  for i:=n downto 1 do
  begin
       s:=0;
       for j:=i+1 to n do
           s:=s+x[j]*A[i,j];
       x[i]:=(b[i]-s)/A[i,i];
  end;
  A:=C; b:=b1;
  vyvod(n,x);
end.