Не выдает решение - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

В ответе выдает вот так: Rewenie: x(1)= NaN x(2)= NaN x(3)= NaN Помогите найти ошибку

Решение задачи: «Не выдает решение»

textual
Листинг программы
program Z_1_2;
// Uses Crt;
const
  n = 3;
 
var
  i, j, k: integer;
  a, s: array[1..n, 1..n] of real;
  b, x, y: array[1..n] of real;
  tmp: real;
 
begin
       // Clrscr;
   (*
       for i:=1 to n do
       begin
           for j:=1 to n do
           begin
             write('a(',i,',',j,')=');
             readln(a[i,j]);
          end;
          write('b(',i,')=');
          readln(b[i]);
          writeln;
      end;
  *) 
  a[1, 1] := 0.63;a[1, 2] := -1.72;a[1, 3] := 3.37;b[1] := -0.75;
  a[2, 1] := a[1, 2];a[2, 2] := -2.27;a[2, 3] := 1.62;b[2] := 1.27;
  a[3, 1] := a[1, 3];a[3, 2] := a[2, 3];a[3, 3] := -0.43;b[3] := 2.74;
  
  
  for i := 1 to n do
  begin
    tmp := 0;
    for k := 1 to (i - 1) do
      tmp := tmp + s[k, i] * s[k, i];
    if a[i, i] - tmp >= 0 then s[i, i] := sqrt(a[i, i] - tmp)
    else writeln('Извлекаем корень из отрицательного числа. Результатам верить нельзя');
    for j := (i + 1) to n do
    begin
      tmp := 0;
      for k := 1 to (i - 1) do
        tmp := tmp + s[k, i] * s[k, j];
      s[i, j] := (a[i, j] - tmp) / s[i, i];
    end;
  end;
  
  for i := 1 to n do
  begin
    tmp := 0;
    for k := 1 to (i - 1) do
      tmp := tmp + s[k, i] * y[k];
    y[i] := (b[i] - tmp) / s[i, i];
  end;
  
  for i := n downto 1 do
  begin
    tmp := 0;
    for k := (i + 1) to n do
      tmp := tmp + s[i, k] * x[k];
    x[i] := (y[i] - tmp) / s[i, i];
  end;
  
  writeln('Rewenie:');
  
  for i := 1 to n do
    writeln('x(', i, ')=', x[i]:8:2);
  
  // while not keypressed do;
  
end.

Оцени полезность:

15   голосов , оценка 4 из 5
Похожие ответы