![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() помогите пожалуйста перевести из Паскаля в Дельфи прогу:
Код: Код:
Uses CRT; Const maxn = 10; Type Data = Real; Matrix = Array[1..maxn, 1..maxn] of Data; Vector = Array[1..maxn] of Data; { Процедура ввода расширенной матрицы системы } Procedure ReadSystem(n: Integer; var a: Matrix; var b: Vector); Var i, j, r: Integer; Begin r := WhereY; GotoXY(2, r); Write('A'); For i := 1 to n do begin GotoXY(i * 6 + 2, r); Write(i); GotoXY(1, r + i + 1); Write(i:2); end; GotoXY((n + 1) * 6 + 2, r); Write('b'); For i := 1 to n do begin For j := 1 to n do begin GotoXY(j * 6 + 2, r + i + 1); Read(a[i, j]); end; GotoXY((n + 1) * 6 + 2, r + i + 1); Read(b[i]); end; End; { Процедура вывода результатов } Procedure WriteX(n :Integer; x: Vector); Var i: Integer; Begin For i := 1 to n do Writeln('x', i, ' = ', x[i]); End; { Функция, реализующая метод Зейделя } Function Zeidel(n: Integer; a: Matrix; b: Vector; var x: Vector; e: Data) :Boolean; Var i, j: Integer; s1, s2, s, v, m: Data; Begin Repeat m := 0; For i := 1 to n do begin { Вычисляем суммы } s1 := 0; s2 := 0; For j := 1 to i - 1 do s1 := s1 + a[i, j] * x[j]; For j := i to n do s2 := s2 + a[i, j] * x[j]; { Вычисляем новое приближение и погрешность } v := x[i]; x[i] := x[i] - (1 / a[i, i]) * (s1 + s2 - b[i]); If Abs(v - x[i]) > m then m := Abs(v - x[i]); end; Until m < e; Zeidel := true; End; Var n, i: Integer; a: Matrix; b, x: Vector; e: Data; Begin ClrScr; Writeln('Программа решения систем линейных уравнений по методу Зейде-ля'); Writeln; Writeln('Введите порядок матрицы системы (макс. 10)'); Repeat Write('>'); Read(n); Until (n > 0) and (n <= maxn); Writeln; readln; Writeln('Введите точность вычислений'); Repeat Write('>'); Read(e); Until (e > 0) and (e < 1); Writeln; readln; Writeln('Введите расширенную матрицу системы'); ReadSystem(n, a, b); Writeln; readln; { Предполагаем начальное приближение равным нулю } For i := 1 to n do x[i] := 0; If Zeidel(n, a, b, x, e) then begin Writeln('Результат вычислений по методу Зейделя'); WriteX(n, x); readln; end else Writeln('Метод Зейделя не сходится для данной системы'); Writeln; readln; End. Задание: Решение систем линейных алгебраических уравнений методом Зейделя Буду очень признателен) сам ничего не понимаю) |