Программа
TYPE PowerMatrix=1..10; { Максимальное возможное количествао строк и
столбцов матрицы (размер несущего массива) }
Element=real; { Тип элементов матрицы }
MatrixType=record { Матрица }
M,N:PowerMatrix; { Фактическая размерность матрицы }
Matrix:array [PowerMatrix,PowerMatrix] of element
{ Несущая матрица }
end;
PROCEDURE InputMatrix (var Matrix:MatrixType); { Процедура ввода матрицы }
Var i,j:PowerMatrix; { Счетчики строк и столбцов }
Begin
Write('Введите количество строк и столбцов матрицы ');
{ Вывод приглашения ввести размерность матрицы }
with Matrix do
begin
ReadLn(M,N); { Ввод размерности матрицы }
for i:=1 to M do { Цикл ввода строк матрицы }
for j:=1 to N do { Цикл ввода элементов матрицы }
begin
Write('Введите элемент [',i,',',j,'] ');
{ Вывод приглашения ввести элемент матрицы }
ReadLn(Matrix[i,j]) { Ввод элемента матрицы }
end
end
End;
PROCEDURE OutputMatrix(var F:text;Matrix:MatrixType);
{ Процедура вывода матрицы в текстовый файл }
Var i,j:PowerMatrix; { Счетчики строк и столбцов }
Begin
with Matrix do
for i:=1 to M do { Цикл вывода строк матрицы }
begin
for j:=1 to N do { Цикл вывода элементов матрицы }
Write (F,Matrix[i,j]:5:0,' '); { Вывод элемента матрицы }
WriteLn(F) { Вывод конца строки }
end;
End;
PROCEDURE GetMult(InMatrix:MatrixType;var OutMatrix:MatrixType);
{ Процедура умножения }
Var i,j,k:PowerMatrix; { Счетчики циклов }
Begin
{ Определение размерности результирующей матрицы: }
OutMatrix.M:=InMatrix.N;
OutMatrix.N:=InMatrix.N;
for i:=1 to InMatrix.N do { Цикл определения результирующей матрицы по строкам }
for j:=1 to InMatrix.N do { Цикл определения результирующей матрицы по столбцам }
begin
OutMatrix.Matrix[i,j]:=0; { Сброс суммы элемента }
for k:=1 to InMatrix.M do { Цикл набора суммы элемента }
OutMatrix.Matrix[i,j]:=OutMatrix.Matrix[i,j]+ { Набор суммы элемента }
InMatrix.Matrix[k,i]*InMatrix.Matrix[k,j]
end
End;
PROCEDURE Stop; { Процедура остановки программы }
Begin
WriteLn('Нажмите <Enter>'); { Вывод приглашения нажать <Enter> }
ReadLn { Остановка программы до нажатия <Enter> }
End;
VAR
A,B,C,R:MatrixType; { Матрицы }
ConF,F:text; { Файловые переменные для вывода матриц }
BEGIN
WriteLn; { Пропуск строки }
Assign(F,'DATA'); { Связывание файловой переменной с именем файла на диске }
Assign(ConF,'CON'); { Связывание файловой переменной с консолью }
{ Открытие файллов для записи: }
Rewrite(F);
Rewrite(ConF);
WriteLn(' ВВОД МАТРИЦЫ A:'); { Вывод подсказки }
InputMatrix(A); { Ввод матрицы }
WriteLn; { Пропуск строки }
WriteLn(' Исходная матрица A: '); { Вывод заголовка }
OutputMatrix(ConF,A); { Вывод матрицы }
GetMult(A,R); { Получение произведения A'*A }
WriteLn(' Произведение матрицы A: '); { Вывод заголовка }
OutputMatrix(ConF,R); { Вывод матрицы }
WriteLn(F,' Произведение матрицы A: '); { Вывод заголовка в файл }
OutputMatrix(F,R); { Вывод матрицы в файл }
Stop; { Остановка программы }
WriteLn(' ВВОД МАТРИЦЫ B:'); { Вывод подсказки }
InputMatrix(B); { Ввод матрицы }
WriteLn; { Пропуск строки }
WriteLn(' Исходная матрица B: '); { Вывод заголовка }
OutputMatrix(Conf,B); { Вывод матрицы }
GetMult(B,R); { Получение произведения B'*B }
WriteLn(' Произведение матрицы B: '); { Вывод заголовка }
OutputMatrix(ConF,R); { Вывод матрицы }
WriteLn(F,' Произведение матрицы B: '); { Вывод заголовка в файл }
OutputMatrix(F,R); { Вывод матрицы в файл }
Stop; { Остановка программы }
WriteLn(' ВВОД МАТРИЦЫ C:'); { Вывод подсказки }
InputMatrix(C); { Ввод матрицы }
WriteLn; { Пропуск строки }
WriteLn(' Исходная матрица C: '); { Вывод заголовка }
OutputMatrix(ConF,C); { Вывод матрицы }
GetMult(C,R); { Получение произведения C'*C }
WriteLn(' Произведение матрицы C: '); { Вывод заголовка }
OutputMatrix(ConF,R); { Вывод матрицы }
WriteLn(F,' Произведение матрицы C: '); { Вывод заголовка в файл }
OutputMatrix(F,R); { Вывод матрицы в файл }
Stop; { Остановка программы }
{ Закрытие файлов: }
Close(F);
Close(ConF)
END.
Схема процедуры "Stop"
***************
* *
* П У С К *
* *
***************
:
:
***************** ┌─
│
* "Нажмите * │ Вывод приглашения
∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙│
* <Enter>" * │ нажать <Enter>
│
***************** └─
:
:
***************** ┌─
│
* * │ Остановка программы
ReadLn ∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙│
* * │ до нажатия <Enter>
│
***************** └─
:
:
***************
* *
* К О Н Е Ц *
* *
***************
СХЕМА ПРОЦЕДУРЫ InputMatrix
***************
* *
* П У С К *
* *
***************
:
:
:
***************** ┌─
│ Ввод количества
* * │
M,N ∙∙∙∙∙∙∙│ строк и столбцов
* * │
│ матрицы
***************** └─
:
:
:
***************** ┌─
* * │
* * │ Инициализация
* i:=1 *∙∙│
* * │ счетчика цикла
* * │
***************** └─
:
:∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙<∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙.
: :
: :
: :
***************** ┌─ :
* * │ ─┐ *****************
* * │ Инициализация │ * *
* j:=1 *∙∙│ Переопределение │ * *
* * │ счетчика цикла │∙∙* i:=i+1 *
* * │ счетчика цикла │ * *
***************** └─ │ * *
: ─┘ *****************
: :
: :
: :
: :
:∙∙∙∙∙∙∙∙<∙∙∙∙∙∙∙∙∙∙∙∙∙. :
: : :
: *************** ┌─ :
: * * │ :
: * * │ Переопределение :
: * j:=j+1 *∙∙∙∙∙∙∙│ :
: * * │ счетчика цикла :
: * * │ :
: ***************** └─ :
: : :
: : :
: ***************** ┌─ :
: │ Ввод :
: * * │ :
: Matrix[i,j] ∙∙∙∙∙∙∙│ элемента :
* * * │ :
* * │ матрицы :
* * ***************** └─ :
* * Нет : :
* j>N *∙∙∙∙∙∙∙∙∙∙∙∙∙∙' :
* * :
* * :
* * :
* :
: Да :
: :
* :
* * :
* * :
* * Нет :
* i>M *∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙'
* *
* *
* *
*
: Да
:
:
***************
* *
* К О Н Е Ц *
* *
***************
СХЕМА ПРОЦЕДУРЫ OutputMatrix
***************
* *
* П У С К *
* *
***************
:
:
***************** ┌─
* * │
* * │ Инициализация
* i:=1 *∙∙│
* * │ счетчика цикла
* * │
***************** └─
:
:∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙<∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙.
: :
: :
: :
***************** ┌─ :
* * │ ─┐ *****************
* * │ Инициализация │ * *
* j:=1 *∙∙│ Переопределение │ * *
* * │ счетчика цикла │∙∙* i:=i+1 *
* * │ счетчика цикла │ * *
***************** └─ │ * *
: ─┘ *****************
: :
: :
: :
: :
:∙∙∙∙∙∙∙∙<∙∙∙∙∙∙∙∙∙∙∙∙∙. :
: : :
: ***************** ┌─ :
: * * │ :
: * * │ Переопределение :
: * j:=j+1 *∙∙∙∙∙∙∙│ :
: * * │ счетчика цикла :
: * * │ :
: ***************** └─ :
: : :
: : :
: ***************** ┌─ :
: │ Вывод :
: * * │ :
: Matrix[i,j] ∙∙∙∙∙∙∙│ элемента :
* * * │ :
* * │ матрицы :
* * ***************** └─ :
* * Нет : :
* j>N *∙∙∙∙∙∙∙∙∙∙∙∙∙∙' :
* * :
* * *****************
* *
* * Вывод *
: Да конца
: * строки *
*
* * *****************
* * :
* * Нет :
* i>M *∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙'
* *
* *
* *
*
: Да
:
:
***************
* *
* К О Н Е Ц *
* *
***************
СХЕМА ПРОЦЕДУРЫ GetMult
***************
* *
* П У С К *
* *
***************
:
:
:
***************** ┌─
* OutMatrix.M:= * │
* InMatrix.N * │ Определение
* *∙∙│ размерности
* OutMatrix.N:= * │ результирующей
* InMatrix.N * │ матрицы
***************** └─
:
:
:
***************** ┌─
* * │
* * │ Инициализация
* i:=1 *∙∙│
* * │ счетчика цикла
* * │
***************** └─
:
:∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙<∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙.
: :
: :
: :
* :
* * ─┐ *****************
* * │ * *
Да * * Переопределение │ * *
.∙∙∙* i>M * │∙∙* i:=i+1 *
: * * счетчика цикла │ * *
: * * │ * *
: * * ─┘ *****************
: * :
: : :
: :Нет :
: : `∙∙∙∙<∙∙∙∙.
: : :
: ***************** ┌─ :
: * * │ :
: * * │ Инициализация :
: * j:=1 *∙∙│ :
: * * │ счетчика цикла :
: * * │ :
: ***************** └─ :
: : :
: : :
: :∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙<∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙. :
: : : :
: * : :
: * * : :
: * * : :
: * * Нет : :
: * j>N *∙∙∙∙∙. : :
: * * : : :
: * * : : :
: * * ***************** ┌─ : :
: * * * │ : :
: : Да * OutMatrix. * │ Сброс : :
: : * Matrix[i,j]:=0*∙∙∙│ : :
: : * * │ суммы : :
: : * * │ : :
: : ***************** └─ : :
: : : : :
: : ***************** ┌─ : :
: : * * │ : :
: : * * │ Инициализация : :
: : * k:=1 *∙∙│ : :
: : * * │ счетчика цикла : :
: : * * │ : :
: : ***************** └─ : :
: : : : :
: : : : :
: : : : :
: : : : :
: : :∙∙∙∙∙∙<∙∙∙∙∙. : :
: : : : : :
: : : : : :
: : : ***************** ┌─ : :
: : : * * │ : :
: : : * * │ Переопределение : :
: : : * k:=k+1 *∙∙│ : :
: : : * * │ счетчика цикла : :
: : : * * │ : :
: : : ***************** └─ : :
: : : : : :
: : : : : :
: : : ***************** ┌─ : :
: : : * * │ OutMatrix.Matrix[i,j]:= : :
: : : * * │ OutMatrix.Matrix[i,j]+ : :
: : : * *∙∙│ InMatrix.Matrix[k,i]* : :
: : : * * │ InMatrix.Matrix[k,j] : :
: : : * * │ : :
: : : ***************** └─ : :
: : : : : :
: : * : : :
: : * * : : :
: : * * : : :
: : * * Нет: : :
: : * k>InMatrix.N *∙∙∙∙' : :
: : * * : :
: : * * : :
: : * * : :
: : * : :
: : : Да : :
: : : : :
: : : : :
: : ***************** ┌─ : :
: : * * │ : :
: : * * │ Переопределение : :
: : * j:=j+1 *∙∙∙│ : :
: : * * │ счетчика цикла : :
: : * * │ : :
: : ***************** └─ : :
: : : : :
: : `∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙' :
: : :
`∙∙∙∙∙∙∙∙. `∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙'
:
:
:
:
***************
* *
* К О Н Е Ц *
* *
***************
СХЕМА ПРОГРАММЫ
***************
* *
* П У С К *
* *
***************
:
:
*****************
* *
* *
* Открытие файла*
* *
* *
*****************
:
: .∙∙∙∙∙∙∙∙∙∙∙. ∙∙∙∙∙∙∙∙∙∙∙.
: : : : :
***************** : ***************** : *****************
* * * * : * * * * : * * * *
* * Ввод * * : * * Ввод * * : * * Ввод * *
* * * * : * * * * : * * * *
* * матрицы A * * : * * матрицы B * * : * * матрицы B * *
* * * * : * * * * : * * * *
***************** : ***************** : *****************
: : : : :
: : : : :
: : : : :
***************** : ***************** : *****************
* * * * : * * * * : * * * *
* * Вывод * * : * * Вывод * * : * * Вывод * *
* * * * : * * * * : * * * *
* * матрицы A * * : * * матрицы A * * : * * матрицы A * *
* * * * : * * * * : * * * *
***************** : ***************** : *****************
: : : : :
: : : : :
: : : : :
***************** : ***************** : *****************
* * * * : * * * * : * * * *
* * Получение * * : * * Получение * * : * * Получение * *
* * произве- * * : * * произве- * * : * * произве- * *
* * дения * * : * * дения * * : * * дения * *
* * * * : * * * * : * * * *
***************** : ***************** : *****************
: : : : :
: : : : :
: : : : :
***************** : ***************** : *****************
* * * * : * * * * : * * * *
* * Вывод * * : * * Вывод * * : * * Вывод * *
* * * * : * * * * : * * * *
* * результата* * : * * результата* * : * * результата* *
* * * * : * * * * : * * * *
***************** : ***************** : *****************
: : : : :
: : : : :
***************** : ***************** : *****************
* * * * : * * * * : * * * *
* * Вывод * * : * * Вывод * * : * * Вывод * *
* * результата* * : * * результата* * : * * результата* *
* * в файл * * : * * в файл * * : * * в файл * *
* * * * : * * * * : * * * *
***************** : ***************** : *****************
: : : : :
: : : : :
***************** : ***************** : *****************
* * * * : * * * * : * * * *
* * * * : * * * * : * * * *
* * Stop * * : * * Stop * * : * * Stop * *
* * * * : * * * * : * * * *
* * * * : * * * * : * * * *
***************** : ***************** : *****************
: : : : :
`∙∙∙∙∙∙∙∙∙∙∙' `∙∙∙∙∙∙∙∙∙∙∙' :
*****************
* *
* *
* Открытие файла*
* *
* *
*****************
:
:
***************
* *
* К О Н Е Ц *
* *
***************
Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию