25.12.2011, 13:40 | #1 (permalink) |
Новичок
Регистрация: 25.12.2011
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Задача на матрицы
|
25.12.2011, 13:40 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Скорее всего в одном из уже созданных постов аналогичная проблема уже решена Задачи на матрицы Матрицы Симметричность матрицы Задача об элементах матрицы Задача об элементах матрицы Задача на заполнение, транспонирование и вывод матрицы |
25.12.2011, 14:51 | #2 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Пожалуйста:
Код:
TYPE Matrix=Array[1..100,1..100] of Real; VAR A,B,C:Matrix; MA,MB,MC,NA,NB,NC:Byte; i,j,k:Byte; Flag:Boolean; Sum:Real; Procedure Prod(m1,m2:Matrix; Mm1,Nm1,Mm2,Nm2:Byte; var m3:Matrix; var Mm3:Byte; var Nm3:Byte; var Pb:boolean); Var q,p,r:Byte; begin If Nm1=Mm2 then Pb:=true else Pb:=false; If Pb then begin For q:=1 to Mm1 do For p:=1 to Nm2 do begin m3[q,p]:=0; For r:=1 to Nm1 do m3[q,p]:=m3[q,p]+m1[q,r]*m2[r,p]; end; Mm3:=Mm1; Nm3:=Nm2; end; end; BEGIN Write('Number of rows of matrix A = '); Readln(MA); Write('Number of columns of matrix A = '); Readln(NA); For i:=1 to MA do For j:=1 to NA do begin Write('A[',i,',',j,']= '); Readln(A[i,j]); end; Writeln; Write('Number of rows of matrix B = '); Readln(MB); Write('Number of columns of matrix B = '); Readln(NB); For i:=1 to MB do For j:=1 to NB do begin Write('B[',i,',',j,']= '); Readln(B[i,j]); end; Writeln; Prod(A,B,MA,NA,MB,NB,C,MC,NC,Flag); If Flag then begin Writeln('Matrix A:'); For i:=1 to MA do begin For j:=1 to NA do write(A[i,j]:8:1); Writeln; end; Writeln; Writeln('Matrix B:'); For i:=1 to MB do begin For j:=1 to NB do write(B[i,j]:8:1); Writeln; end; Writeln; Writeln('Matrix C:'); For i:=1 to MC do begin For j:=1 to NC do write(C[i,j]:8:2); Writeln; end; Writeln; Sum:=0; For i:=1 to MC do For j:=1 to NC do If C[i,j]<0 then Sum:=Sum+C[i,j]; Writeln('Sum of C negatives is ',Sum:0:2); end else Writeln('The number of columns of A is NOT equal to the number of rows of B!!!'); Readln; END. |
25.12.2011, 17:41 | #4 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Дык... Матрицы перемножает. Там вводятся сами матрицы (m1 и m2), число строк матрицы m1 (Mm1), число ее столбцов (Nm1), то же для матрицы m2 - Mm2 и Nm2, выводится матрица-произведение - m3, число ее строк (Mm3) и столбцов (Nm3), а также булевский флажок, показывающий, соблюдено ли необходимое условие самой возможности перемножения матриц, каковое состоит в том, что число столбцов первой матрицы должно быть равно числу строк второй. Кстати, из этого следует, что в Вашей задаче первая матрица-вектор должна быть именно строкой, а ни в коем случае не столбцом.
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|