Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 26.06.2012
Сообщений: 20
1

Написать процедуру перемножения матриц.

26.06.2012, 23:32. Просмотров 1319. Ответов 1
Метки нет (Все метки)

ребят нужна помощь

Задачи по программированию.
Задача решается на двух языках.


Задача 8.
Написать процедуру перемножения матриц.


очень нужно к восьми утра!!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.06.2012, 23:32
Ответы с готовыми решениями:

Написать функцию перемножения матриц
Написать программу , которая вводит матрицу А,транспонирует ее , транспонированную перемножает на А...

Не могу написать программу перемножения матриц
#include <iostream> #include <conio.h> using namespace std; int i,j; void vvod(int X) {...

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

Написать процедуру для суммирования матриц
1. Даны натуральные числа a, b, c. Определить функцию bin(x), переводящую число х из десятичной...

1
386 / 212 / 102
Регистрация: 09.04.2012
Сообщений: 635
29.06.2012, 14:30 2
Лучший ответ Сообщение было отмечено Antik как решение

Решение

Перемножение матриц
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#include <iostream>
 
using namespace std;
 
// создание матрицы
template <class T>
T ** f1(T **m, int sz1, int sz2)
{
int i;
m = new T*[sz1];
for(i=0;i<sz1;i++)
m[i] = new T[sz2];
return m;
};
 
//удаление матрицы
template <class T>
void f2(T **m, int sz1, int sz2)
{
int i;
for(i=0;i<sz1;i++)
delete[] m[i];
delete[] m;
}
 
// присвоение матрице значений
template <class T>
void f3(T **m, int sz1, int sz2)
{
int i,j;
for(i=0;i<sz1;i++)
for(j=0;j<sz2;j++)
m[i][j] = i+j;
}
 
// присвоение матрице 0 значений
template <class T>
void f6(T **m, int sz1, int sz2)
{
int i,j;
for(i=0;i<sz1;i++)
for(j=0;j<sz2;j++)
m[i][j] = 0;
}
 
// вывод матрицы
template <class T>
void f4(T **m, int sz1, int sz2)
{
int i,j;
for(i=0;i<sz1;i++)
{
for(j=0;j<sz2;j++)
 cout << m[i][j] << " ";
cout << "\n";
}
}
 
// перемножение матриц
template <class T>
T** f5(T **m, T **m1, int sz1, int sz2)
{
if (sz1 != sz2)
return (T**)NULL;
 
int i,j,k;
int **m2;
m2 = f1(m2, sz1, sz2);
f6(m2, sz1, sz2);
for(i=0;i<sz1;i++)
for(j=0;j<sz1;j++)
for(k=0;k<sz1;k++)
m2[i][j]+=m[i][k]*m1[k][j];
return m2;
}
 
int main()
{
int **m1;
int **m2;
 
m1 = f1(m1, 3, 3);
m2 = f1(m2, 3, 3);
 
f3(m1, 3, 3);
f3(m2, 3, 3);
 
f4(m1, 3, 3);
f4(m2, 3, 3);
 
 
int **m3 = f5(m1,m2,3,3);
f4(m3,3,3);
 
f2(m1, 3, 3);
f2(m2, 3, 3);
return 0;
}
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include <stdio.h>
#include <malloc.h>
 
 
// создание матрицы
int** f1(int** m, int sz1, int sz2)
{
int i;
m = (int**) malloc(sz1*sizeof(int*));
for(i=0;i<sz1;i++)
m[i] = (int*) malloc(sz2*sizeof(int));
return m;
};
 
//удаление матрицы
void f2(int** m, int sz1, int sz2)
{
int i;
for(i=0;i<sz1;i++)
free(m[i]);
free(m);
}
 
// присвоение матрице значений
void f3(int** m, int sz1, int sz2)
{
int i,j;
for(i=0;i<sz1;i++)
for(j=0;j<sz2;j++)
m[i][j] = i+j;
}
 
// присвоение матрице 0 значений
void f6(int** m, int sz1, int sz2)
{
int i,j;
for(i=0;i<sz1;i++)
for(j=0;j<sz2;j++)
m[i][j] = 0;
}
 
// вывод матрицы
void f4(int** m, int sz1, int sz2)
{
int i,j;
for(i=0;i<sz1;i++)
{
for(j=0;j<sz2;j++)
 printf("%d ", m[i][j]);
printf("\n");
}
}
 
// перемножение матриц
int** f5(int** m, int** m1, int sz1, int sz2)
{
int i,j,k;
int **m2;
 
if (sz1 != sz2)
return (int**) NULL;
 
m2 = f1(m2, sz1, sz2);
f6(m2, sz1, sz2);
for(i=0;i<sz1;i++)
for(j=0;j<sz1;j++)
for(k=0;k<sz1;k++)
m2[i][j]+=m[i][k]*m1[k][j];
return m2;
}
 
int main()
{
int **m1;
int **m2;
int **m3;
m1 = f1(m1, 3, 3);
m2 = f1(m2, 3, 3);
 
f3(m1, 3, 3);
f3(m2, 3, 3);
 
f4(m1, 3, 3);
f4(m2, 3, 3);
 
 
m3 = f5(m1,m2,3,3);
f4(m3,3,3);
 
f2(m1, 3, 3);
f2(m2, 3, 3);
return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.06.2012, 14:30

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

Оператор перемножения матриц
не работает оператор* двух матриц, никак не могу понять как сделать так, чтобы в операторе была уже...

Программа перемножения 2 матриц
ДОброго времени суток прошу помочь написать программу перемножения 2 матриц,матрицы вводятся с...

Оптимизация перемножения матриц
Доброго времени суток! Помогите пожалуйста с оптимизацией перемножения матриц. Транспонировал,...

Функция перемножения матриц.
Функция mult, прошу помощи, ибо не пойму в чем ошибка. #include &lt;iostream&gt; #include &lt;math.h&gt;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.