Другие языки программирования и технологии

"Работа с матрицами,использование подпрограмм" TurboPascal

Помогите пожалуйста... Написать программу перемножения двух матриц. В программе должна быть предусмотрена проверка возможности умножения одной матрицы на другую в виде функции,возвращающей логический результат. Размер матриц указывается пользователем. Чем проще код программы тем лучше...
EA
Ersultan Abdikoof
103
Доброго времени суток.

Условием, когда возможно умножение матриц является равенство числа столбцов первой матрицы и строк второй. Проверить не сложно. А само умножение делается в четыре строчки

for i:=1 to M do {цикл по строкам матрицы А}
for j:=1 to K do {цикл по столбцам матрицы В}
for s:=1 to N do {цикл по столбцам А и строкам В}
C[i,j] := C[i,j] + A[i,s]*B[s,j];

Здесь С результирующая матрица, которая до начала выполнения этого куска должна быть обнулена.

Остальное сами.

Удачи!
Евгений Савостеенко
Евгений Савостеенко
59 613
Лучший ответ
ето сверх-сложно, если делать обобщенно =) если взять конкретный случай и множить 3*3 на 3*3 или 2*2 на 2*2, то впринцыпе не сложно. Дай запрос в тот же гугл на "перемножение матриц pascal", когда я учил его, у нас на курсовую один чел ето здавал.
Георгий Скляр
Георгий Скляр
4 795
procedure calculation(m1,n1,m2,n2:integer); {m1,n1,m2,n2 - размерности двух матриц}
var i,j,l,k:integer;
mul:real;
begin
if (n2<>m1) then {проверка на возможность перемножения}
begin
showmessage('Нельзя перемножить');
exit;
end;
SetLength(res,m1,n2);
for i:=0 to (m1-1) do
begin
for j:=0 to (n1-1) do
begin
a[i,j]:=StrToFloat(Child.StringGrid1.Cells[j,i]);
end;
end;

for i:=0 to (m2-1) do
begin
for j:=0 to (n2-1) do
begin
b[i,j]:=StrToFloat(Child.StringGrid2.Cells[j,i]);
end;
end;

for i:=0 to (m1-1) do
begin
for j:=0 to (n2-1) do
begin
for l:=0 to (n1-1) do
begin
res[i,j]:=res[i,j]+(a[i,l]*b[l,j]); {матрица результата}
end;
end;
end;
end;
end;

Вам осталось только вычленить в отдельную процедуру проверку на возможность перемножения и, по необходимости, передавать процедуре сами перемножаемые матрицы. У меня они читаются непосредственно с формы.
AI
Ayan Izteleuov
921