Показать сообщение отдельно
  #1  
Старый 17.12.2011, 01:02
hasan550 hasan550 вне форума
Прохожий
 
Регистрация: 17.12.2011
Сообщения: 5
Репутация: 10
По умолчанию как перевести программу из Pascal в Delphi

помогите пожалуйста перевести из Паскаля в Дельфи прогу:
Код:
Код:
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.

Задание: Решение систем линейных алгебраических уравнений
методом Зейделя

Буду очень признателен) сам ничего не понимаю)
Ответить с цитированием