5 / 4 / 1
Регистрация: 25.10.2019
Сообщений: 149
1

Умножить транспонированную матрицу

24.10.2021, 19:22. Показов 751. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
с клавиатуры введены две матрицы вещественных чисел заданной
пользователем размерности A и B. Определить функцию, которая вычисляет
произведение матрицы А и транспонированной матрицы В и возвращает его как
результат выполнения функции;
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
#include <iostream>
 
using namespace std;
void ProductMat(int** mas1, int** mas2, int rows1, int rows2, int cols1, int cols2);
int** transp(int** Matrix, int n, int m);
void delete2DArray(int** arr, const int m);
 
int main()
{
    setlocale(LC_ALL, "Russian");
    cout << "Введите рамерность матрицы 1" << endl;
    int rows1, cols1, rows2, cols2;
    cin >> rows1 >> cols1;
    cout << "Введите мэлементы матрицы" << endl;
    int** arr = new int* [rows1];
    for (int i = 0; i < rows1; i++) {
        arr[i] = new int[cols1];
    }
    for (int i = 0; i < rows1; i++) {
        for (int j = 0; j < cols1; j++) {
            cin >> arr[i][j];
        }
    }
    cout << "Введите рамерность матрицы 2" << endl;
    cin >> rows2 >> cols2;
    cout << "Введите мэлементы матрицы" << endl;
    int** app = new int* [rows2];
    for (int i = 0; i < rows2; i++) {
        app[i] = new int[cols2];
    }
    for (int i = 0; i < rows2; i++) {
        for (int j = 0; j < cols2; j++) {
            cin >> app[i][j];
        }
    }
    app = transp(app, rows2, cols2);
    int** c;
    if (rows1 != rows2)
    {
        cout << "Невозможно умножить матрицу" << endl;
    }
    else
    {
        int** c;
        ProductMat(arr, app, rows1, cols1, cols2, rows2);
    }
    delete2DArray(app, cols2);
    delete2DArray(arr, rows1);
    system("PAUSE");
}
 
void ProductMat(int** mas1, int** mas2, int rows1, int rows2, int cols1, int cols2)
{
    int** res = new int*[rows1];
    for (int i = 0; i < rows1; i++)
    {
       res[i] = new int[cols2];
    }
    for (int i = 0; i < rows1; i++)
    {
        for (int j = 0; j < rows2; j++)
        {
            res[i][j] = 0;
            for (int k = 0; k < rows1; k++)
            {
                res[i][j] += mas1[i][k] * mas2[k][j];
            }
            cout << res[i][j] << " ";
        }
        cout << endl;
    }
}
 
int** transp(int** Matrix, int n, int m)
{
    int** Matrix2 = new int* [m];
    for (int i = 0; i < m; i++)
    {
        Matrix2[i] = new int[n];
    }
    for (int i = 0; i < m; i++)
    {
        for (int j = 0; j < n; j++) {
            Matrix2[i][j] = Matrix[j][i];
        }
    }
    int temp = n;
    n = m;
    m = temp;
    cout << endl;
    for (int i = 0; i < m; i++)
    {
        for (int j = 0; j < n; j++)
        {
            cout << Matrix2[i][j] << " ";
        }
        cout << endl;
    }
    return Matrix2;
}
 
void delete2DArray(int** arr, const int m)
{
    for (int i = 0; i < m; ++i)
        delete[] arr[i];
    delete[] arr;
}
У меня программа вечно вылетает, когда я числа столбцов и рядов матриц неодинаковые ввожу. Как мне это поправить? Я то знаю, что, чтоб умножить две матрицы у них должны количество столбцов первого и рядов второго совпадать, но оно все равно не работает
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.10.2021, 19:22
Ответы с готовыми решениями:

Создать транспонированную матрицу
Дано квадратная матрица порядка NxN. Вычислить транспонированную. Вот мой код. Результаты выдает...

Получить транспонированную матрицу (Проверьте код,пожалуйста)
Что у меня не так,помогите пожалуйста Задана квадратная матрица. Получить транспонированную...

Задана квадратная матрица. Получить транспонированную матрицу
4. Двумерные массивы Задана квадратная матрица. Получить транспонированную матрицу

Как перемножить заданную мною прямоугольную матрицу на транспонированную?
#include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include &lt;iomanip&gt; using namespace std; class...

0
24.10.2021, 19:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.10.2021, 19:22
Помогаю со студенческими работами здесь

Написать процедуру для суммирования матриц. Сложить исходную матрицу и транспонированную
Написать процедуру для суммирования матриц. С ее помощью сложить исходную матрицу и...

Как умножить матрицу на матрицу
Как умножить матрицу на матрицу в Visual Studio?

Как умножить матрицу на матрицу?
Как умножить матрицу на матрицу? Напишите пожалуйста!

Записать транспонированную матрицу в файл "exit.txt"
По заданию нужно записать в файл результат . выводит ошибку . скорее всего не там размещаю все это....

умножить матрицу на столбец
матрица квадратная

Умножить первую матрицу на вторую
2 матрицы считываются с файла и выводятся, а вот умножение их почему то не работает, помогите...


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

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

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