![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
otherside |
![]()
Сообщение
#1
|
Студент ![]() ![]() Группа: Продвинутые Сообщений: 98 Регистрация: 29.2.2008 Город: красноярск Учебное заведение: КрижтИрГупс Вы: студент ![]() |
пдскажите пожалуйста как написать программу перемножения двух произвольных матриц? размер матриц запрашивается с клавиатуры. на экране должно появится:
1)запрос размера матриц 2)две заполненные матрицы 3 третья матрица-результат перемножения |
tig81 |
![]()
Сообщение
#2
|
Академик ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Преподаватели Сообщений: 15 617 Регистрация: 15.12.2007 Город: Украина, Запорожье Учебное заведение: ЗНУ Вы: преподаватель ![]() |
пдскажите пожалуйста как написать программу перемножения двух произвольных матриц? размер матриц запрашивается с клавиатуры. на экране должно появится: 1)запрос размера матриц 2)две заполненные матрицы 3 третья матрица-результат перемножения Пусть заданы две матрицы: А размера mxn и B размера nxk. Тогда элементы матрицы С=АВ, вычисляются по формуле: c[i,j]=sum(a[i,t]*b[t,j],t=1..n). |
otherside |
![]()
Сообщение
#3
|
Студент ![]() ![]() Группа: Продвинутые Сообщений: 98 Регистрация: 29.2.2008 Город: красноярск Учебное заведение: КрижтИрГупс Вы: студент ![]() |
вот написала программу... проверьте пожалуйста так или нет?
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 |
![]()
Сообщение
#4
|
Ассистент ![]() ![]() ![]() ![]() Группа: Julia Сообщений: 593 Регистрация: 23.2.2007 Город: Улан-Удэ Учебное заведение: БГУ Вы: преподаватель ![]() |
В остальном вроде бы верно.
|
otherside |
![]()
Сообщение
#5
|
Студент ![]() ![]() Группа: Продвинутые Сообщений: 98 Регистрация: 29.2.2008 Город: красноярск Учебное заведение: КрижтИрГупс Вы: студент ![]() |
В остальном вроде бы верно. вот такой же ответ правильный? введите 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
|
Ассистент ![]() ![]() ![]() ![]() Группа: Julia Сообщений: 593 Регистрация: 23.2.2007 Город: Улан-Удэ Учебное заведение: БГУ Вы: преподаватель ![]() |
В первой матрице должно быть 6 столбцов, а у вас 4, очевидно есть ошибка при создании или при выводе матрицы а. Проверяем программу, и, действительно, ошибка!(см. выше)
А вот вычислять у меня к сожалению нет времени, проверьте в любом математическом пакете или задайте размер матрицы поменьше и посчитайте на калькуляторе. |
otherside |
![]()
Сообщение
#7
|
Студент ![]() ![]() Группа: Продвинутые Сообщений: 98 Регистрация: 29.2.2008 Город: красноярск Учебное заведение: КрижтИрГупс Вы: студент ![]() |
В первой матрице должно быть 6 столбцов, а у вас 4, очевидно есть ошибка при создании или при выводе матрицы а. Проверяем программу, и, действительно, ошибка!(см. выше) А вот вычислять у меня к сожалению нет времени, проверьте в любом математическом пакете или задайте размер матрицы поменьше и посчитайте на калькуляторе. спасибо вам за помощь, все сошлось (IMG:style_emoticons/default/smile.gif) очень благодарна |
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 25.5.2025, 21:32 |
Зеркало сайта Решебник.Ру - reshebnik.org.ru