![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 24.04.2011
Сообщений: 1
|
![]()
Надо написать программу в паскале для поиска определителя матрицы по такому алгоритму:
1. В 1-ом столбце ищем максимальный по модулю эл-т и запоминаем номер строки 2. Если этот эл-т равен 0, то и определитель равен нулю 3. Если номер строки не равен 1, то меняем эту строку с 1-ой и умножаем определитель на -1 4. Делим 1 строку на эл-т [1;1] и умножаем определитель на эл-т [1;1] 5. Из j-ого столбца (от 2 до размерности) вычитаем 1-ый столбец, умноженный на [1;j] Все это делаем (размерность матрицы-1) раз умножаем определитель на последний эл-т в матрице. Я составила вот такую программу: Type mas = array [1..10, 1..10] of real; Var n: Integer; d: real; a: mas; Procedure vvod (Var A: Integer); Var rk: Integer; begin {$I-} repeat Writeln ('Vvedite razmernost matrici'); Readln (a); rk:=ioresult; if (rk<>0) or (A<=0) or (A>10) then Writeln ('error') until (rk=0) and (A>0) and (A<=10); {$I+} end; Procedure Zap (Var m: mas; n: integer); Var i, j: Integer; begin Writeln('Vvedite elementi matrici postrochno'); For i:=1 to n do for j:=1 to n do Read (m[i,j]); end; Procedure deter ( var a: mas; n: integer; var det: real); Var i, k, j, c: integer; max, b: real; begin det:=1; j:=1; k:=1; While (j<=n) do begin max:=a[1,j]; for i := (j+1) to n do if (abs(a[i, j])>abs (max)) then begin max:=a[i, j]; k:=i end; if max=0 then det:=0 else begin if (k<>j) then begin det:=det*(-1); for i:=j to n do begin b:=a[j, i]; a[j, i]:=a[k, i]; a[k, i]:=b end; end; for i:=j to n do a[j, i]:= a[j, i]/a[j, j]; det:= det*a[j, j]; for i:=j+1 to n do begin for c:=1 to n do a[c, i]:= a[c, i] - a[c, j]*a[i, j]; end; end; j:=j+1; end; det:=det*a[n, n]; end; Procedure Vivod (m: mas; n: integer); Var i, j: Integer; begin For i:=1 to n do begin for j:=1 to n do Write (m[i, j]:7:3, ' '); Writeln; end; end; begin vvod (n); Zap (a, n); Vivod (a, n); Readln; deter (a, n, d); Readln; Writeln ('Opredelitel matrici ', d:5:3); Readln; end. С 5-ым шагом как-то не получается. Помогите найти в чем ошибка |
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 29.12.2009
Сообщений: 1,166
|
![]()
держи нямку
Код:
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть] |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Определитель матрицы на PHP | DenisShash | Помощь студентам | 1 | 11.01.2011 08:30 |
Определитель Матрицы(реккурсия С) | XSerGx | Общие вопросы C/C++ | 1 | 08.01.2011 19:29 |
Определитель матрицы 2 на 2 С++ | Mashul'ka | Помощь студентам | 1 | 03.11.2010 00:08 |
не получается сортировка матрицы в чем ошибка? | Darki | Паскаль, Turbo Pascal, PascalABC.NET | 5 | 23.06.2010 00:26 |
Определитель матрицы | Snake_ua | Помощь студентам | 7 | 10.02.2010 10:44 |