Процедура умножения матрицы на числонет
5. Листинг
label start,startA,startB,startC,startD;
type matrix = array[1..10,1..10] of integer;
var N,M,i,j,k,code: integer;
var A,B,C,D,E,X,Xtmp1,Xtmp2 : matrix;
varinput : string;
{процедура сложения матриц}
procedure Madd ( MA : matrix; MB : matrix);
begin
for i := 1 to N do begin
for j := 1 to N do begin
X[i,j] := MA[i,j] + MB[i,j];
end;
end;
end;
{процедура вычитания матриц}
procedure MSub ( MA : matrix; MB : matrix);
begin
for i := 1 to N do begin
for j := 1 to N do begin
X[i,j] := MA[i,j] - MB[i,j];
end;
end;
end;
{процедура умножения матрицы на число}
procedure MK ( MA : matrix; k : integer);
begin
for i := 1 to N do begin
for j := 1 to N do begin
X[i,j] := MA[i,j] * k;
end;
end;
end;
begin
Start:
writeln ('Введитеразмерматрицы(2-9)');
{примем размеры матриц}
readln (input);
val (input,N,code);
if code = 1 then begin
writeln ('Ошибка - нечисловое значение');
gotoStart;
end;
if (N > 9) or (N < 2) then
begin
writeln ('Неверный размер матрицы');
goto Start;
end;
StartA:
writeln ('Матрица A:');
for i := 1 to N do
for j := 1 to N do
begin
writeln ('Введите ',i,'-ое значение ',j,'-ого ряда');
readln (input);
val (input,M,code);
if code = 1 then begin
writeln ('Ошибка - нечисловоезначение');
goto StartA;
end;
A[i,j] := M;
end;
StartB:
writeln ('Матрица B:');
for i := 1 to N do
for j := 1 to N do
begin
writeln ('Введите ',i,'-ое значение ',j,'-ого ряда');
readln (input);
val (input,M,code);
if code = 1 then begin
writeln ('Ошибка - нечисловоезначение');
goto StartB;
end;
B[i,j] := M;
end;
StartC:
writeln ('Матрица C:');
for i := 1 to N do
for j := 1 to N do
begin
writeln ('Введите ',i,'-ое значение ',j,'-ого ряда');
readln (input);
val (input,M,code);
if code = 1 then begin
writeln ('Ошибка - нечисловоезначение');
goto StartC;
end;
C[i,j] := M;
end;
StartD:
writeln ('Матрица D:');
for i := 1 to N do
for j := 1 to N do begin
writeln ('Введите ',i,'-ое значение ',j,'-ого ряда');
readln (input);
val (input,M,code);
if code = 1 then begin
writeln ('Ошибка - нечисловоезначение');
goto StartD;
end;
D[i,j] := M;
end;
{ФУНКЦИЯ}
MSub (B,C);
MK (X,3);
Xtmp1 := X;
MK (D,4);
Msub (Xtmp1,X);
Madd (A,X);
for i := 1 to N do
begin
writeln (' ',i,'-ыйрядрезульт. м-цы: ');
for j:= 1 to N do begin
write (' ',X[i,j], ',');
end;
writeln ('');
end;
end.
6. Контрольный пример
Введите размер матрицы(2-9)
2
Матрица A:
Введите 1-ое значение 1-ого ряда
1
Введите 1-ое значение 2-ого ряда
1
Введите 2-ое значение 1-ого ряда
1
Введите 2-ое значение 2-ого ряда
1
Матрица B:
Введите 1-ое значение 1-ого ряда
2
Введите 1-ое значение 2-ого ряда
2
Введите 2-ое значение 1-ого ряда
2
Введите 2-ое значение 2-ого ряда
2
Матрица C:
Введите 1-ое значение 1-ого ряда
3
Введите 2-ое значение 1-ого ряда
3
Введите 2-ое значение 2-ого ряда
3
Матрица D:
Введите 1-ое значение 1-ого ряда
4
Введите 1-ое значение 2-ого ряда
4
Введите 2-ое значение 1-ого ряда
4
Введите 2-ое значение 2-ого ряда
4
1-ый ряд результ. м-цы:
-18, -18,
2-ый ряд результ. м-цы:
-18, -18,
При проверке X = A+3(B-C)-4*D получаем аналогичный результат.
7. Инструкция пользователю
После запуска программы пользователю предлагается выбрать размер матриц, с которыми он будет оперировать в дальнейшем. Допустимый диапазон – от 2 до 9.
При выборе размера матриц следует учесть, что большему размеру соответствует значительно большее количество элементов.
На вопрос: «Введите размер матрицы(2-9)» следует нажать клавишу соответствующей цифры, а затем <Enter>.
Затем появится следующее приглашение:
Матрица A:
Введите 1-ое значение 1-ого ряда
На что следует ввести значение обозначенного элемента матрицы A и нажать <Enter>.
Таким образом необходимо заполнить матрицы A,B,C и D.
После чего можно программа выдаст результат. Например:
1-ый ряд результ. м-цы:
-18, -18,
2-ый ряд результ. м-цы:
-18, -18,
Список литературы
1. http://www.btpascal.chat.ru/ - сайт.