iteracii.PAS

{* СЛУ методом итераций *}

Unit ITERACII;
Interface
Implementation
Begin
 writeln('Решение систем линейных уравнений методом итераций');
End.

{Reshenie SLAY metodom iteracii}
Program yrt;

Uses iteracii.pas; {* Эту строку можно удалить *}
Uses crt, graph; {* Подключение модулей *}
label 1, 2;
Type {* Используемые типы *}
  ta = Array[1..3, 1..3] Of real;
  tb = Array[1..3] Of real;
Var {* В работе нам потребуются переменные: *}
  i   : integer;
  j   : integer;
  k   : integer;
  grd : integer;
  grm : integer;
  p   : integer;
  n   : integer;
  m   : integer;
  c   : integer;
  w   : integer;
  s   : String;
  u   : real;
  u1  : real;
  s1  : real;
  t   : real;
  h   : real;
  f   : text;
  a   : ta;
  al  : ta;
  b   : tb;
  x   : tb;
  x1  : tb;
  be  : tb;
Begin
  clrscr; {* Очистка экрана *}
  n := 3;
  m := 3;
  c := 4;
  writeln; {* Пропускаем одну строку *}
  writeln; {* Вывод пустой строки *}
  writeln; {* Пустая строка *}
  writeln; {* Пропускаем одну строку *}
  writeln; {* Пустая строка *}
  writeln; {* Пропускаем одну строку *}
  writeln; {* Вывод пустой строки *}
  writeln; {* Пропускаем одну строку *}
  writeln('                   Ќ ¦¬ЁвҐ 1, зв®Ўл ўўҐбвЁ ¬ ваЁжл б Є« ўЁ вгал ');
  writeln('                   Ќ ¦¬ЁвҐ 2, зв®Ўл ¬ ваЁжл бзЁв вм б д ©«  ');
  readln(k); {vvod matric}
  Case k Of   1:
  Begin
    For i := 1 To 3 Do {* Переменная i увеличивается с 1 до 3 *}
    Begin
      write('  b[', i, '] = ');
      read(b[i]);
      For j := 1 To 3 Do {* Переменная j увеличивается с 1 до 3 *}
      Begin
        write('           a[', i, ', ', j, '] = ');
        read(a[i, j]);
      End;
      
    End;
    
  End;
  2:
  Begin
    assign(f, 'f.txt'); {* Привязка переменной f к файлу 'f.txt' *}
    reset(f); {* Открытие файла для чтения *}
    For i := 1 To 3 Do {* Увеличиваем i от 1 до 3 с шагом 1 *}
      For j := 1 To 3 Do {* Цикл для j => [1 .. 3] *}
      Begin
        read(f, a[i, j]);
      End;
    For j := 1 To 3 Do {* Переменная j увеличивается с 1 до 3 *}
    Begin
      read(f, b[j]);
    End;
    close(f); {* Закрытие файла *}
  End;
  
End;
For i := 1 To m Do {* Цикл для i => [1 .. m] *}
Begin
  be[i] := b[i] / a[i, i];
  For j := 1 To n Do {* Увеличиваем j от 1 до n с шагом 1 *}
  Begin
    If ji Then
      al[i, j] := - a[i, j] / a[i, i];
  End;
  al[i, i] := 0;
End;
For i := 1 To 3 Do {* Переменная i увеличивается с 1 до 3 *}
  x[i] := 0;
For p := 1 To c Do {* Переменная p увеличивается с 1 до c *}
Begin
  For i := 1 To m Do {* Переменная i увеличивается с 1 до m *}
  Begin
    h := be[i];
    For j := 1 To n Do {* Переменная j увеличивается с 1 до n *}
    Begin
      h := h + al[i, j] * x[j];
    End;
    x1[i] := h;
  End;
  For w := 1 To m Do {* Увеличиваем w от 1 до m с шагом 1 *}
    x[w] := x1[w];
End;
Grd := detect;
INITGRAPH(Grd, Grm, 'C:tp.7_0bgi_st');
setbkcolor(14);
For i := 1 To m Do {* Увеличиваем i от 1 до m с шагом 1 *}
Begin
  setcolor(2);
  str(i, s);
  settextstyle(0, 0, 1);
  outtextxy(247, 157 + 30 * i, s);
  settextstyle(0, 0, 2);
  outtextxy(230, 150 + 30 * i, 'X = ');
  str(x[i] : 6 : 5, s);
  outtextxy(288, 150 + 30 * i, s);
  setcolor(red);
  outtextxy(170, 30, '—Ёб«® ЁвҐа жЁ© =');
  str(c, s);
  outtextxy(440, 30, s);
End;
readkey; {* Ждем нажатия любой клавиши *}
closegraph
End......