|
|
zadach178.PAS |
|
{* Задача 178 *}Unit ZADACH178;Interface Implementation Begin writeln('Решение системы линейных уравнений матричным методом. '); End. Program Matrix_has_you; Uses zadach178.pas; {* Эту строку можно удалить *} Uses crt; {* Подключение модулей *} Const {* Постоянные значения *} n = 4; Type {* Типы переменных *} matr = Array[1..n, 1..n] Of real; mas = Array[1..n] Of real; Const {* Постоянные значения *} a1 : matr = (( * , * , * , * ),( * , * , * , * ), ( * , * , * , * ),( * , * , * , * )); {тут вбиваешь массив по строкам} a2 : mas = ( * , * , * , * ); {тут вбиваешь элементы столбца из правой части системы} Var {* Необходимые переменные *} a : matr; b : matr; c : matr; x : matr; a3 : matr; m3 : mas; i : integer; j : integer; dt : real; Procedure output(m : matr; n : integer); Var {* В работе нам потребуются переменные: *} i : integer; j : integer; Begin For i := 1 To n Do; {* Увеличиваем i от 1 до n с шагом 1 *} Procedure del(a : matr; Var {* Необходимые переменные *} b : matr; m : integer); i : integer); j : integer); Var {* Необходимые переменные *} ki : integer; kj : integer; di : integer; dj : integer; Begin di := 0; For ki := 1 To m - 1 Do; {* Цикл для ki => [1 .. m] *} dj := 0; For kj := 1 To m - 1 Do; {* Увеличиваем kj от 1 до m с шагом 1 *} b[ki := a[ki + di, kj + dj]; kj] := a[ki + di, kj + dj]; Function Determinant(n : integer; a : matr); Var {* Объявление переменных *} i : integer; j : integer; k : integer; sum : real; b : matr; Begin sum := 0; k := 1; If n = 2 Then sum := a[1, 1] * a[2, 2] - a[2, 1] * a[1, 2] Else For i; If odd(i) Then sum := sum + k * a[i, 1] * Determinant(n - 1, b) Else sum; Determinant := sum; Procedure obmatrix(n : integer; a : matr); Var {* В работе нам потребуются переменные: *} det : real; Begin det := determinant(n, a); For i := 1 To n Do; {* Переменная i увеличивается с 1 до n *} If Not odd(i + j) Then x[i := determinant(n - 1, b) Else x[i, j]; j] := determinant(n - 1, b) Else x[i, j]; Procedure transpon(a : matr); Begin For i := 1 To n Do; {* Увеличиваем i от 1 до n с шагом 1 *} Procedure AxB(m1 : matr; m2 : mas; n : byte); Var {* Необходимые переменные *} a : real; b : real; buf : real; i : byte; j : byte; k : byte; l : byte; Begin buf := 0; For i := 1 To n Do; { For l := 1 To n Do {* Цикл для l => [1 .. n] *} {* Увеличиваем l от 1 до n с шагом 1 *} {* Цикл для l => [1 .. n] *} } For j := i To i Do; {* Цикл для j => [i .. i] *} For k := 1 To n Do; {* Переменная k увеличивается с 1 до n *} m3[i] := buf; Procedure AxConst(a : matr; ch : real); Begin For i := 1 To n Do {* Переменная i увеличивается с 1 до n *} For j := 1 To n Do {* Переменная j увеличивается с 1 до n *} c[i, j] := a[i, j] * ch; End; Begin clrscr; {* Очистка экрана *} writeln('-------Source---------'); output(a1, n); writeln; {* Пустая строка *} dt := Determinant(n, a1); writeln('Determinant=', dt : 2 : 2); writeln('-------inverse--------'); transpon(a1); obmatrix(n, a3); AxConst(x,(1 / dt)); output(c, n); writeln('-------Result---------'); AxB(c, a2, n); For i := 1 To n Do {* Переменная i увеличивается с 1 до n *} writeln('x', i, '=', m3[i]); readln; {* Приостановка программы. Ожидание Enter *} End.... 07.08.2014 - Breakpoint - точка остановки 07.08.2014 - Топ-10 самых популярных приложений в Facebook 18.11.2013 - Панель управления и персонализация системы. Windows Vista 18.11.2013 - Логические и физические диски. Windows Vista 18.11.2013 - Удаление файлов и папок 01.11.2013 - Программирование дисковых подсистем: возможности 31.10.2013 - Windows8 или Windows7? 31.10.2013 - Windows8, игры |
|
Non-commercial fansite
|