IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> массивы в паскале, перемножение матриц
otherside
сообщение 1.5.2008, 10:49
Сообщение #1


Студент
**

Группа: Продвинутые
Сообщений: 98
Регистрация: 29.2.2008
Город: красноярск
Учебное заведение: КрижтИрГупс
Вы: студент



пдскажите пожалуйста как написать программу перемножения двух произвольных матриц? размер матриц запрашивается с клавиатуры. на экране должно появится:
1)запрос размера матриц
2)две заполненные матрицы
3 третья матрица-результат перемножения
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
tig81
сообщение 1.5.2008, 10:55
Сообщение #2


Академик
********

Группа: Преподаватели
Сообщений: 15 617
Регистрация: 15.12.2007
Город: Украина, Запорожье
Учебное заведение: ЗНУ
Вы: преподаватель



Цитата(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
сообщение 4.5.2008, 10:33
Сообщение #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.5.2008, 11:07
Сообщение #4


Ассистент
****

Группа: Julia
Сообщений: 593
Регистрация: 23.2.2007
Город: Улан-Удэ
Учебное заведение: БГУ
Вы: преподаватель



В остальном вроде бы верно.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
otherside
сообщение 4.5.2008, 11:54
Сообщение #5


Студент
**

Группа: Продвинутые
Сообщений: 98
Регистрация: 29.2.2008
Город: красноярск
Учебное заведение: КрижтИрГупс
Вы: студент



Цитата(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
сообщение 4.5.2008, 12:09
Сообщение #6


Ассистент
****

Группа: Julia
Сообщений: 593
Регистрация: 23.2.2007
Город: Улан-Удэ
Учебное заведение: БГУ
Вы: преподаватель



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

А вот вычислять у меня к сожалению нет времени, проверьте в любом математическом пакете или задайте размер матрицы поменьше и посчитайте на калькуляторе.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
otherside
сообщение 4.5.2008, 12:47
Сообщение #7


Студент
**

Группа: Продвинутые
Сообщений: 98
Регистрация: 29.2.2008
Город: красноярск
Учебное заведение: КрижтИрГупс
Вы: студент



Цитата(Julia @ 4.5.2008, 20:09) *

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

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

спасибо вам за помощь, все сошлось (IMG:style_emoticons/default/smile.gif) очень благодарна
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия Сейчас: 25.5.2025, 10:28

Книжки в помощь: "Сборник заданий по высшей математике" Кузнецов Л.А., "Сборник заданий по высшей математике" Чудесенко В.Ф., "Индивидуальные задания по высшей математике" Рябушко А.П., и другие.




Зеркало сайта Решебник.Ру - reshebnik.org.ru