Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/19: Рейтинг темы: голосов - 19, средняя оценка - 4.68
1 / 1 / 0
Регистрация: 01.05.2016
Сообщений: 13
1

Найти произведение матриц

03.05.2016, 17:09. Показов 3549. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
1)Даны матрицы А и В размера k×m и m×l соответственно. Найти произведение АВ. Перемножение матриц реализовать в виде функции.
1
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.05.2016, 17:09
Ответы с готовыми решениями:

Найти произведение матриц
17. Найти произведение матриц A(5,7) и D(5.7)

Найти произведение матриц
Даны две матрицы. Найти произведение матриц. Размерности массивов, где хранятся матрицы, должны...

Найти произведение матриц
Дано: прямоугольные матрицы A и B. Найти произведение AB. Вычисление элемента матрицы AB оформить...

Найти произведение матриц
горю с задачкой...помогите пожалуйста:( Даны матрицы A и B размером k на m и m на l...

2
838 / 641 / 940
Регистрация: 26.06.2015
Сообщений: 1,409
03.05.2016, 22:05 2
Лучший ответ Сообщение было отмечено Dilleo как решение

Решение

Вот набросал по простому.
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
99
100
101
#include <iostream>
#include <cstdlib>
int** matrix_create(int N, int M);
void  matrix_free(int** mat, int N);
int** matrix_miltiply(int& N, int& M, int** m1, int N1, int M1, int** m2, int N2, int M2);
void  matrix_rand(int** m, int N, int M, int num);
void  matrix_print(std::ostream& _out, int** m, int N, int M);
 
 
int main(void){
    int   N1 = 5, M1 = 3;
    int** m1 = matrix_create(N1, M1);
    if(m1 == NULL)
        return 1;
 
    int   N2 = M1, M2 = 8;
    int** m2 = matrix_create(N2, M2);
    if(m2 == NULL)
        return 1;
 
    matrix_rand(m1, N1, M1, 5);
    matrix_rand(m2, N2, M2, 7);
 
    int N3, M3;
    int** m3 = matrix_miltiply(N3, M3, m1, N1, M1, m2, N2, M2);
    if(m3 == NULL)
        return 1;
 
    matrix_print(std::cout, m1, N1, M1);
    matrix_print(std::cout, m2, N2, M2);
    matrix_print(std::cout, m3, N3, M3);
 
    matrix_free(m1, N1);
    matrix_free(m2, N2);
    matrix_free(m3, N3);
    return 0;
}
 
//перемножение матриц
int** matrix_miltiply(int& N, int& M, int** m1, int N1, int M1, int** m2, int N2, int M2){
    if(M1 != N2)
        return NULL;
 
    int** m3 = matrix_create(N1, M2);
    if(m3 == NULL)
        return NULL;
 
    for(int i = 0; i < N1; ++i){
        for(int j = 0; j < M2; ++j){
            m3[i][j] = 0;
            for(int k = 0; k < N2; ++k)
                m3[i][j] += m1[i][k] * m2[k][j];
        }
    }
    N = N1, M = M2;
    return m3;
}
 
//выделение памяти для матрицы
int** matrix_create(int N, int M){
    int** mat = new (std::nothrow) int*[N];
    if(mat == NULL)
        return NULL;
 
    for(int i = 0; i < N; ++i){
        mat[i] = new (std::nothrow) int[M];
        if(mat[i] == NULL){
            matrix_free(mat, i);
            mat = NULL;
            break;
        }
    }
    return mat;
}
 
//удаление памяти
void matrix_free(int** mat, int N){
    if(mat != NULL){
        for(int i = 0; i < N; ++i)
            delete[] mat[i];
        delete[] mat;
    }
}
 
//заполнение
void matrix_rand(int** m, int N, int M, int num){
    for(int i= 0 ; i < N; ++i){
        for(int j = 0; j < M; ++j)
            m[i][j] = rand() % num;
    }
}
 
//печать
void matrix_print(std::ostream& _out, int** m, int N, int M){
    for(int i= 0 ; i < N; ++i){
        for(int j = 0; j < M; ++j)
            _out << m[i][j] << ' ';
        _out << std::endl;
    }
    _out << std::endl;  
}
Пример работы кода
0
1 / 1 / 0
Регистрация: 01.05.2016
Сообщений: 13
29.05.2016, 12:10  [ТС] 3
Геомеханик, пожалуйста помогите решить задачу, условие: Дан двумерный массив из четного числа строк. Строки верхней половины массива поменять местами со строками нижней половины. Заранее спасибо
0
29.05.2016, 12:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.05.2016, 12:10
Помогаю со студенческими работами здесь

Найти сумму и произведение матриц
всем привет! помогите если сможете,,,как найти сумму матриц и произведение матриц,,заранее спасибо,,

Найти произведение двух матриц
Найти произведение двух матриц (многомерных векторов) 5x6 и 6x5 элементов. #include...

pflfxf/VISUAL с++ Найти произведение матриц
ЗАДАЧА. Найти произведение матриц A(m,n) и B(n,k). Таблица спецификаций № Идентификатор...

Найти произведение двух матриц и минимальное значение результата
#include &lt;iostream.h&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; main() { ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru