Помощь - Поиск - Пользователи - Календарь
Полная версия: массивы в паскале > Информатика / Программирование
Образовательный студенческий форум > Другие дисциплины > Информатика / Программирование
otherside
пдскажите пожалуйста как написать программу перемножения двух произвольных матриц? размер матриц запрашивается с клавиатуры. на экране должно появится:
1)запрос размера матриц
2)две заполненные матрицы
3 третья матрица-результат перемножения
tig81
Цитата(otherside @ 1.5.2008, 13:49) *

пдскажите пожалуйста как написать программу перемножения двух произвольных матриц? размер матриц запрашивается с клавиатуры. на экране должно появится:
1)запрос размера матриц
2)две заполненные матрицы
3 третья матрица-результат перемножения

Пусть заданы две матрицы: А размера mxn и B размера nxk. Тогда элементы матрицы С=АВ, вычисляются по формуле: c[i,j]=sum(a[i,t]*b[t,j],t=1..n).
otherside
вот написала программу... проверьте пожалуйста так или нет?
program five;
var
a:array[1..100,1..100] of integer; {можно было объединить a,b,c:array[1..100,1..100] of integer;}
b:array[1..100,1..100] of integer;
c:array[1..100,1..100] of integer;
m,k,n,i,j,m2,n2,S:integer;
begin
randomize;
write ('введите n= ');
read(n);
write ('введите m= ');
read(m);
for i:=1 to n do
for j:=1 to m do
a[i,j]:=random(20)-10; {наверное так}
writeln('матрица а=');
for i:=1 to n do
begin
for j:=1 to m do
write(round(a[i,j]),' '); {Зачем округляете, матрица целочисленная}
writeln( );
end;
write('введите n2= ');
read(n2);
write('введите m2= ');
read(m2);
for i:=1 to n2 do
for j:=1 to m2 do
b[i,j]:=random(20)-10;
writeln('матрица b=');
for i:=1 to n2 do
begin
for j:=1 to m2 do
write(round(b[i,j]),' ');
writeln( );
end;
if m=n2 then
begin
for i:=1 to n do
for j:=1 to m2 do
begin
S:=0;
for k:=1 to m do
S:=S+a[i,k]*b[k,j];
c[i,j]:=S;
end;
writeln('матрица c=a*b');
for i:=1 to n do
begin
for j:=1 to m2 do
write(round(c[i,j]),' ');
writeln( );
end;
end
else

write('перемножение невозможно');
end.
Julia
В остальном вроде бы верно.
otherside
Цитата(Julia @ 4.5.2008, 19:07) *

В остальном вроде бы верно.

вот такой же ответ правильный?
введите n= 4
введите m= 6
матрица а=
-7 -10 7 -9
4 7 2 5
-7 -7 7 -2
1 6 -3 -9
введите n2= 6
введите m2= 2
матрица b=
-6 -8
-5 0
2 -2
-7 8
-6 3
-9 2
матрица c=a*b
253 -57
-78 -12
153 2
-12 -60
только я не понимаю почему он мне вместо 6 столбцов в матрице а выводит только 4?
Julia
В первой матрице должно быть 6 столбцов, а у вас 4, очевидно есть ошибка при создании или при выводе матрицы а. Проверяем программу, и, действительно, ошибка!(см. выше)

А вот вычислять у меня к сожалению нет времени, проверьте в любом математическом пакете или задайте размер матрицы поменьше и посчитайте на калькуляторе.
otherside
Цитата(Julia @ 4.5.2008, 20:09) *

В первой матрице должно быть 6 столбцов, а у вас 4, очевидно есть ошибка при создании или при выводе матрицы а. Проверяем программу, и, действительно, ошибка!(см. выше)

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

спасибо вам за помощь, все сошлось smile.gif очень благодарна
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2025 Invision Power Services, Inc.