program matrica; // Название программы
uses crt; // Подключение встроенного модуля
label p; // Объявление метки
var // Объявление глобальных переменных
a,c: array [1..3, 1..3] of integer;
b,d: array [1..3] of integer;
t,h: array [1..3, 1..3] of real;
y:integer;
l,x,d1,d2,d3,x1,x2,x3:real;
procedure yEo; // Вызов: Вычисление выражения (A*A)*B
var // Объявление локальных переменных
i,j,s,k:integer;
begin
ClrScr; // Очистка экрана
for i:=1 to 3 do begin {Цикл №1}
for j:=1 to 3 do begin {Цикл №2}
s:=0;
for k:=1 to 3 do begin {Цикл №3}
s:=s+a[i,k]*a[k,j];
end; {Завершение: Цикл №3}
c[i,j]:=s;
end; {Завершение: Цикл №2}
end; {Завершние: Цикл №1}
d[1]:=(c[1,1]*b[1])+(c[2,1]*b[2])+(c[3,1]*b[3]);
d[2]:=(c[1,2]*b[1])+(c[2,2]*b[2])+(c[3,2]*b[3]);
d[3]:=(c[1,3]*b[1])+(c[2,3]*b[2])+(c[3,3]*b[3]);
GotoXY(10,3); Write('1. A='); // Определение новой позиции курсора
for i:=1 to 3 do begin {Цикл №1}
for j:=1 to 3 do begin {Цикл №2}
GotoXY(12+4*i,1+j); // Определение новой позиции курсора
WriteLn(a[j,i]); // Вывод матрицы A
end; {Завершение: Цикл №2}
end; {Завершение: Цикл №1}
GotoXY(35,3); Write('2. B='); // Определение новой позиции курсора
for i:=1 to 3 do begin {Цикл №1}
GotoXY(41,(j-2)+1*i); // Определение новой позиции курсора
WriteLn(b[i]); // Вывод матрицы B
end; {Завершение: Цикл №1}
GotoXY(10,10); Write('3. A*A='); // Определение новой позиции курсора
for i:=1 to 3 do begin {Цикл №1}
for j:=1 to 3 do begin {Цикл №2}
GotoXY(14+4*i,8+j); // Определение новой позиции курсора
WriteLn(c[i,j]); // Вывод матрицы A*A
end; {Завершение: Цикл №2}
end; {Завершение: Цикл №1}
GotoXY(35,10); Write('4. (A*A)*B='); // Определение новой позиции курсора
for i:=1 to 3 do begin {Цикл №1}
GotoXY(47,(j+5)+1*i); // Определение новой позиции курсора
WriteLn(d[i]); // Вывод матрицы (A*A)*B
end; {Завершение: Цикл №1}
ReadKey; // Ожидание сигнала от клавиш клавиатуры
end; // Завершение: Вычисление выражения (A*A)*B
procedure yEtw; // Вызов: Транспонирование матрицы A
var // Объявление локальных переменных
i,j:integer;
begin
ClrScr; // Очистка экрана
GotoXY(30,11); Write('A='); // Определение новой позиции курсора
for i:=1 to 3 do begin {Цикл №1}
for j:=1 to 3 do begin {Цикл №2}
GotoXY(28+4*i,9+j); // Определение новой позиции курсора
WriteLn(a[i,j]:2); // Вывод транспонированной матрицы А
end; {Завершение: Цикл №2}
end; {Завершение: Цикл №1}
ReadKey; // Ожидание сигнала от клавиш клавиатуры
end; // Завершение: Вычисление выражения (A*A)*B
procedure yEth; // Вызов: Вычисление определителя матрицы А
begin
ClrScr; // Очистка экрана
l:=(a[1,1]*((a[2,2]*a[3,3])-(a[2,3]*a[3,2])))-(a[1,2]*((a[2,1]*a[3,3])-(a[2,3]*a[3,1])))+(a[1,3]*((a[2,1]*a[3,2])-(a[2,2]*a[3,1])));
GotoXY(33,12); Writeln('Определитель = ',l:2:0); // Определение новой позиции курсора // Вывод найденного определителя матрицы А
ReadKey; // Ожидание сигнала от клавиш клавиатуры
end; // Завершение: Вычисление определителя матрицы А
procedure yEfo; // Вызов: Поиск матрицы, обратной к матрице А
var // Объявление локальных переменных
i,j:integer;
begin
ClrScr; // Очистка экрана
l:=-80;
x:=-1;
for i:=1 to 3 do begin {Цикл №1}
for j:=1 to 3 do begin {Цикл №2}
t[1,1]:=sqr(x)*((a[2,2]*a[3,3])-(a[2,3]*a[3,2])); //
t[2,1]:=(sqr(x)*x)*((a[2,1]*a[3,3])-(a[3,1]*a[2,3])); //
t[3,1]:=(sqr(x)*x*x)*((a[2,1]*a[3,2])-(a[2,2]*a[3,1])); //
t[1,2]:=(sqr(x)*x)*((a[1,2]*a[3,3])-(a[3,2]*a[1,3])); //
t[2,2]:=(sqr(x)*x*x)*((a[1,1]*a[3,3])-(a[3,1]*a[1,3])); // Заполнение матрицы, обратной к матрице А
t[3,2]:=(sqr(x)*x*x*x)*((a[1,1]*a[3,2])-(a[3,1]*a[1,2])); //
t[1,3]:=(sqr(x)*x*x)*((a[1,2]*a[2,3])-(a[2,2]*a[1,3])); //
t[2,3]:=(sqr(x)*x*x*x)*((a[1,1]*a[2,3])-(a[2,1]*a[1,3])); //
t[3,3]:=(sqr(x)*x*x*x*x)*((a[1,1]*a[2,2])-(a[2,1]*a[1,2])); //
end; {Завершение: Цикл №2}
end; {Завершение: Цикл №1}
for i:=1 to 3 do begin {Цикл №1}
for j:=1 to 3 do begin {Цикл №2}
h[i,j]:=(1/l)*(t[i,j]);
end; {Завершение: Цикл №2}
end; {Завершение: Цикл №1}
GotoXY(9,11); Write('Обратная матрица = '); // Определение новой позиции курсора
for i:=1 to 3 do begin {Цикл №1}
for j:=1 to 3 do begin {Цикл №2}
GotoXY(23+10*i,9+j); // Определение новой позиции курсора
WriteLn(h[j,i]:2:4); // Вывод матрицы, обратной к матрице А
end; {Завершение: Цикл №2}
end; {Завершение: Цикл №1}
ReadKey; // Ожидание сигнала от клавиш клавиатуры
end; // Завершение: Поиск матрицы, обратной к матрице А
procedure yEfi; // Вызов: Решение системы методом Крамера
begin
ClrScr; // Очистка экрана
l:=-80;
d1:=(b[1]*((a[2,2]*a[3,3])-(a[2,3]*a[3,2])))-(a[1,2]*((b[2]*a[3,3])-(a[2,3]*b[3])))+(a[1,3]*((b[2]*a[3,2])-(a[2,2]*b[3])));
d2:=(a[1,1]*((b[2]*a[3,3])-(a[2,3]*b[3])))-(b[1]*((a[2,1]*a[3,3])-(a[2,3]*a[3,1])))+(a[1,3]*((a[2,1]*b[3])-(b[2]*a[3,1])));
d3:=(a[1,1]*((a[2,2]*b[3])-(b[2]*a[3,2])))-(a[1,2]*((a[2,1]*b[3])-(b[2]*a[3,1])))+(b[1]*((a[2,1]*a[3,2])-(a[2,2]*a[3,1])));
x1:=d1/l; x2:=d2/l; x3:=d3/l;
GotoXY(35,10); Write('x1='); WriteLn(x1:2:0); // Определение новой позиции курсора
GotoXY(35,12); Write('x2='); WriteLn(x2:2:0); // Определение новой позиции курсора
GotoXY(35,14); Write('x3='); WriteLn(x3:2:0); // Определение новой позиции курсора
ReadKey; // Ожидание сигнала от клавиш клавиатуры
end; // Завершение: Решение системы методом Крамера
BEGIN // Запуск блока основной программы
p:
TextBackground(1); // Задание цвета фона: Синий
ClrScr; // Очистка экрана
TextColor(7); // Задание цвета символа: Белый
GotoXY(1,1); WriteLn(' ---------------'); GotoXY(1,2); WriteLn(' 1 1 3 8');
GotoXY(1,3); WriteLn(' A=-2 4 2, B=4'); GotoXY(1,4); WriteLn(' 3 7 1 24');
GotoXY(1,5); WriteLn(' ---------------');
WriteLn('1 - Вычислить выражение (A*A)*B');
WriteLn('2 - Транспонировать матрицу А');
WriteLn('3 - Вычислить определитель матрицы A');
WriteLn('4 - Найти матрицу,обратную к матрице А');
WriteLn('5 - Решение системы методом Крамера');
WriteLn('6 - Выход');
WriteLn('Выберите нужную цифру'); readln(y);
a[1,1]:=1; a[1,2]:=1; a[1,3]:=3; //
a[2,1]:=-2; a[2,2]:=4; a[2,3]:=2; // Заполнение матрицы A
a[3,1]:=3; a[3,2]:=7; a[3,3]:=1; //
b[1]:=8; b[2]:=4; b[3]:=24; // Заполнение матрицы B
if y=1 then yEo; // Вычисление выражения (A*A)*B
if y=2 then yEtw; // Транспонирование матрицы A
if y=3 then yEth; // Вычисление определителя матрицы А
if y=4 then yEfo; // Поиск матрицы, обратной к матрице А
if y=5 then yEfi; // Решение системы методом Крамера
if y=6 then exit; // Выход из программы
goto p; // Активация метки p
END. // Завершение блока основной программы