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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Написать процедуру сложения матриц. http://www.cyberforum.ru/cpp-beginners/thread614833.html
ребят нужна помощь Задачи по программированию. Задача решается на двух языках. Задача 7. Написать процедуру сложения матриц. очень нужно к восьми утра!!
C++ Написать программу, выдающую таблицу значений многочлена. Для вычисления значения многочлена написать функцию по схеме Горнера. ребят нужна помощь Задачи по программированию. Задача решается на двух языках. Задача 6. Написать программу, выдающую таблицу значений многочлена. Для вычисления значения многочлена написать функцию по схеме Горнера. очень нужно к восьми утра!! http://www.cyberforum.ru/cpp-beginners/thread614832.html
Написать функцию булевского типа, определяющую упорядоченность массива целых чисел. C++
ребят нужна помощь Задачи по программированию. Задача решается на двух языках. Задача 5. Написать функцию булевского типа, определяющую упорядоченность массива целых чисел.
C++ Написать функцию целого типа, определяющую наличие в первой строке матрицы наличие седловой точки.
ребят нужна помощь Задачи по программированию. Задача решается на двух языках. Задача 4. Написать функцию целого типа, определяющую наличие в первой строке матрицы наличие седловой точки. очень нужно к восьми утра!!
C++ Написать функцию булевского типа, проверяющую попадание точки с заданными координатами в треугольник с вершинами в точках (2,1) (3,0) (-1,0) http://www.cyberforum.ru/cpp-beginners/thread614829.html
ребят нужна помощь Задачи по программированию. Задача решается на двух языках. Задача 3. Написать функцию булевского типа, проверяющую попадание точки с заданными координатами в треугольник с вершинами в точках (2,1) (3,0) (-1,0) очень нужно к восьми утра!!
C++ Кусочно-линейная аппроксимация Здравствуйте. Задача: есть два массива X и Y (с одинаковым количеством элементов - по 19). Необходимо установить зависимость между ними Y(X) так, чтобы можно было находить неизвестное приблизительное число Y при значениях X, не из массива. Решил использоваться кусочно-линейную аппроксимацию. Алгоритм (найти отрезок x1 < x < x2, вычислить вес для y1: w1 = (x2 - x) / (x2 - x1), вес для... подробнее

Показать сообщение отдельно
asidorchenko
379 / 205 / 25
Регистрация: 09.04.2012
Сообщений: 635
29.06.2012, 14:30     Написать процедуру перемножения матриц.
Перемножение матриц
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;
}
 
Текущее время: 03:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru