Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Antik
0 / 0 / 0
Регистрация: 26.06.2012
Сообщений: 20
26.06.2012, 23:32     Написать процедуру перемножения матриц. #1
ребят нужна помощь

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


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


очень нужно к восьми утра!!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.06.2012, 23:32     Написать процедуру перемножения матриц.
Посмотрите здесь:

Написать процедуру для суммирования матриц C++
C++ Функция перемножения матриц.
C++ Не могу написать программу перемножения матриц
Массив: перемножения двух матриц A,B размерности n*n C++
Написать процедуру сложения матриц. C++
Алгоритм Штрассена для быстрого перемножения матриц C++
Написать процедуру для суммирования матриц. Сложить исходную матрицу и транспонированную (т. е C++
Написать процедуру для суммирования матриц. Ошибка при передаче массива в функцию C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
asidorchenko
379 / 205 / 25
Регистрация: 09.04.2012
Сообщений: 635
29.06.2012, 14:30     Написать процедуру перемножения матриц. #2
Перемножение матриц
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;
}
Yandex
Объявления
29.06.2012, 14:30     Написать процедуру перемножения матриц.
Ответ Создать тему
Опции темы

Текущее время: 06:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru