Нахождение
произведения двух матриц.
|
Program
Pro_39 (Input, Output);
|
Объявление
имени программы
|
Var
|
Блок
объявления глобальных переменных
|
X,
Y, Z : Array [1..20,
1..20] Of Integer;
|
Матрицы
целых чисел максимальной размерности
20x20
|
N1,
M1, N2, M2 : Integer;
|
N1,
M1, N2, M2 - число строк и столбцов
перемножаемы матриц
|
i,
j, k
: Integer;
|
i,
j, k - переменные циклов
|
S
: Integer;
|
Переменная
S - вспомогательная
|
Begin
|
Начало
тела программы
|
|
|
WriteLn
('PASCAL:Нахождение произведения двух
матриц.');
|
Формулировка
цели алгоритма
|
|
|
Write
('Введите количество строк первой
матрицы: ');
|
Запрос
ввода N1 - количества строк первой
матрицы
|
ReadLn
(N1);
|
Ввод
N1
|
Write
('Введите количество столбцов первой
матрицы: ');
|
Запрос
ввода M1 - количества столбцов первой
матрицы
|
ReadLn
(M1);
|
Ввод
M1
|
WriteLn
('Введите поочередно элементы первой
матрицы:');
|
Запрос
ввода элементов 1-ой матрицы
|
For
i := 1 To N1 Do
|
Цикл
для i
от 1 до N
|
For
j := 1 To M1 Do
|
Цикл
для j от 1 до N
|
Begin
|
Начало
тела цикла
|
Write
('X[', i, ',', j, '] = ');
|
Вывод
удобной подсказки
|
ReadLn
(X [i, j] );
|
Ввод
очередного элемента матрицы X
|
End;
|
Конец
тела цикла
|
|
|
WriteLn
('Число строк 2-ой матрицы равно числу
столбцов 1-ой матрицы.');
|
Сообщение
пользователю
|
N2
:= M1;
|
Присваиваем
числу строк второй матрицы число
столбцов первой
|
Write
('Введите количество столбцов второй
матрицы: ');
|
Запрос
ввода M2- количества столбцов первой
матрицы:
|
ReadLn
(M2);
|
Ввод
M2
|
WriteLn
('Введите поочередно элементы второй
матрицы:');
|
Запрос
ввода элементов 2-ой матрицы
|
For
i := 1 To N2 Do
|
Цикл
для i
от 1 до N
|
For
j := 1 To M2 Do
|
Цикл
для j от 1 до N
|
Begin
|
Начало
тела цикла
|
Write
('Y[', i, ',', j, '] = ');
|
Вывод
удобной подсказки
|
ReadLn
(Y [i, j] );
|
Ввод
очередного элемента матрицы Y
|
End;
|
Конец
тела цикла
|
|
|
For
i := 1 To N1 Do
|
Цикл
для i
от 1 до N1
|
For
j := 1 To M2 Do
|
Цикл
для j от 1 до M2
|
Begin
|
Начало
тела цикла
|
S
:= 0;
|
Начальное
значение S приравниваем 0
|
For
k := 1 To N2 Do
|
Цикл
для k
от 1 до N2
|
S
:= S + X [i, k] * Y [k, j];
|
Накапливаем
в S значение очередного элемента
результирующей матрицы
|
Z
[i, j] := S;
|
Заносим
в Z [i, j] значение очередного вычисленного
элемента
|
End;
|
Конец
тела цикла
|
|
|
WriteLn;
|
Перевод
строки
|
WriteLn
('Полученная матрица:');
|
Сообщение
пользователю о выводе результата
|
For
i := 1 To N1 Do
|
Цикл
для i
от 1 до N1
|
Begin
|
Начало
тела цикла
|
For
j := 1 To M2 Do
|
Цикл
для j от 1 до M2
|
Write
(Z [i, j] : 5);
|
Форматированный
вывод в строку очередного элемента
массива Z
|
WriteLn;
|
Перевод
строки
|
End;
|
Конец
тела цикла
|
|
|
ReadLn;
|
Ожидание
нажатия клавиши Enter для завершения
|
End.
|
Конец
программы.
|