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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 29, средняя оценка - 4.69
coldspirit
0 / 0 / 0
Регистрация: 30.10.2010
Сообщений: 39
#1

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

09.12.2010, 23:22. Просмотров 3774. Ответов 3
Метки нет (Все метки)

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

 Комментарий модератора 
Дублирование тем запрещено правилами форума (п. 3.4).
Не плодите одинаковых тем.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.12.2010, 23:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти произведение матриц (C++):

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

Найти произведение матриц - C++
1)Даны матрицы А и В размера k×m и m×l соответственно. Найти произведение АВ. Перемножение матриц реализовать в виде функции.

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

Найти произведение двух матриц - C++
Найти произведение двух матриц (многомерных векторов) 5x6 и 6x5 элементов. #include "stdafx.h" #include <iostream> using...

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

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

3
asics
Freelance
Эксперт С++
2847 / 1782 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
10.12.2010, 00:21 #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
#include <stdio.h>
 
#define LINE 3
#define COLUMNS 3
 
void enter_matr(int matr[][COLUMNS])
{
    for(int i = 0; i < LINE; ++i)
    {
        for(int j = 0; j < COLUMNS; ++j)
        {
            printf("\n\tmatr[%d][%d] -> ", i, j );
            scanf("%d", &matr[i][j]);
        }
    }
}
 
void print_matr(int matr[][COLUMNS])
{
    for(int i = 0; i < LINE; ++i)
    {
        for(int j = 0; j < COLUMNS; ++j)
        {
            printf(" %d ", matr[i][j]);
        }
        printf("\n");
    }
}
 
void multi_matr(int matr[][COLUMNS], int _matr[][COLUMNS])
{
    for(int i = 0; i < LINE; ++i)
    {
        for(int j = 0; j < COLUMNS; ++j)
        {
            int tmp = matr[i][j] * _matr[i][j];
            printf("   %d ", tmp);
        }
        printf("\n");
    }
}
 
int main(void)
{
    int matr[LINE][COLUMNS], _matr[LINE][COLUMNS];
 
    printf("Enter first matrix: ");
    enter_matr(matr);
 
    printf("\nEnter second matrix: ");
    enter_matr(_matr);
 
    printf("\nFirst matrix: \n");
    print_matr(matr);
 
    printf("\nSecond matrix: \n");
    print_matr(_matr);
 
    printf("\nMultiplication matrix: \n");
    multi_matr(matr, _matr);
    return 0;
}
1
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
10.12.2010, 00:26 #3
asics, Матрицы перемножаются не так.
0
asics
Freelance
Эксперт С++
2847 / 1782 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
12.12.2010, 15:28 #4
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
102
103
104
105
106
107
108
109
#include <iostream>
#include <iomanip>
 
void matrixmult( int **m1, int m1_row, int m1_col, int **m2, int m2_row, int m2_col, int **m3, int m3_row, int m3_col);
 
void matrixfill( int **m, int row, int col)
{
                for (int i = 0; i < row; ++i)
                        for (int j = 0; j < col; ++j)
                        {
                                std::cout << "Enter [ " << i << " ][ " << j <<" ] element: ";
                                std::cin >> m[i][j];
                        }
}
 
void print_matr(int **m, int row, int col)
{
    for (int i = 0; i < row; ++i)
    {
        for (int j = 0; j < col; ++j)
            std::cout << std::setw(3) << m[i][j] << ' ';
 
        std::cout << std::endl;
    }
}
 
int main()
{
        int row1 = 0;
        int col1 = 0;
 
        std::cout << "Enter number of rows of the first matrix: ";
        std::cin >> row1;
 
        std::cout << "Enter number of columns of the first matrix: ";
        std::cin >> col1;
 
        int **arr1 = new int*[row1];
        for (int i = 0; i < row1; ++i)
                arr1[i] = new int[col1];
 
        matrixfill(arr1,row1,col1);
 
        int row2 = 0;
        int col2 = 0;
 
        std::cout << "Enter number of rows of the second matrix: ";
        std::cin >> row2;
 
        std::cout << "Enter number of columns of the second matrix: ";
        std::cin >> col2;
 
        int **arr2 = new int*[row2];
        for (int i = 0; i < row2; ++i)
                arr2[i] = new int[col2];
 
        matrixfill(arr2,row2,col2);
 
        int row3 = row1;
        int col3 = col2;
 
        int **arr3 = new int*[row3];
        for (int i = 0; i < row3; ++i)
                arr3[i] = new int[col3];
 
        for (int i = 0; i < row3; ++i)
                        for (int j = 0; j < col3; ++j)
                                arr3[i][j] = 0;
 
        std::cout << "\nFirst matrix: \n";
        print_matr(arr1, row1, col1);
 
        std::cout << "\nSecond matrix: \n";
        print_matr(arr2, row2, col2);
        //если число столбцов первой матрицы равно числу строк второй матрицы
        if(col1 == row2)
            matrixmult(arr1,row1,col1, arr2,row2,col2, arr3,row3,col3);
 
        else
        {
            std::cerr << " Error! " << std::endl;
            return 1;
        }
 
        std::cout << "\nResult matrix:" << std::endl;
        print_matr(arr3, row3, col3);
 
        for(int i = 0; i < row1; i++)
          delete[] arr1[i];
        delete[] arr1;
        for(int i = 0; i < row2; i++)
           delete[] arr2[i];
        delete[] arr2;
        for(int i = 0;i < row3 ; i++)
            delete[] arr3[i];
        delete[] arr3;
 
        return 0;
}
 
 
 
void matrixmult( int **m1, int m1_row, int m1_col, int **m2, int m2_row, int m2_col, int **m3, int m3_row, int m3_col)
{
        for (int k = 0; k < m2_col; ++k)
                for (int i = 0; i < m1_row; ++i)
                        for (int j = 0; j < m1_col; ++j)
                                m3[i][k] += m1[i][j] * m2[j][k];
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.12.2010, 15:28
Привет! Вот еще темы с ответами:

Найти произведение двух матриц и минимальное значение результата - C++
#include &lt;iostream.h&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; main() { srand(time(NULL)); int n,*tmp,p; ...

Транспонирование матриц. Произведение транспонированных матриц - C++
Найти матрицу С: C=ATBTB; A=\begin{bmatrix}1\\ 1\\ 1\end{bmatrix} B=\begin{bmatrix}1 &amp; 2 &amp; 0 \\ 0 &amp; 1 &amp; 2\end{bmatrix} ...

Массив: Найти произведение двух верхнеугольных матриц, которые храняться в упакованном виде в одномерных массивах. - C++
Найти произведение двух верхнеугольных матриц,которые храняться в упакованном виде в одномерных масивах.

Произведение матриц - C++
Всем привет. Пожалуйста подскажите, в чем ошибка? #include &lt;iostream&gt; using namespace std; int main(){ setlocale(LC_ALL,...


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

Или воспользуйтесь поиском по форуму:
4
Yandex
Объявления
12.12.2010, 15:28
Ответ Создать тему
Опции темы

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