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

Функция умножения матриц неправильно считает

08.06.2021, 17:26. Показов 294. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подскажите где ошибка, видимо функция умножения матриц неправильно работает (скрин приложен). Что я делаю не так?
Ответ умножения разумеется должен быть такой же как и матрица А
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
110
111
112
113
114
115
#include <iostream>
#include <algorithm>
#include <windows.h>
using namespace std;
 
class Graph {
private:
    bool** adjMatrix;
    bool** Pmatrix;
    int numVertices;
    int* p; // перестановка
public:
    Graph(int numVertices) {
        this->numVertices = numVertices;
        adjMatrix = new bool* [numVertices];
        Pmatrix = new bool* [numVertices];
        for (int i = 0; i < numVertices; i++) {
            adjMatrix[i] = new bool[numVertices];
            Pmatrix[i] = new bool[numVertices];
            for (int j = 0; j < numVertices; j++) {
                adjMatrix[i][j] = false;
                Pmatrix[i][j] = false;
            }
        }
        p = new int[numVertices];
        for (int i = 0; i < numVertices; i++)
            p[i] = i;
    }
 
    void addEdge(int i, int j) {
        adjMatrix[i][j] = true;
        adjMatrix[j][i] = true;
    }
 
    int* getP() {
        return p;
    }
 
    bool** getAdjMatrix() {
        return adjMatrix;
    }
 
    int* retPer() {
        next_permutation(p, p + numVertices);
        cout << "Перестановка" << endl;
        for (int i = 0; i < numVertices; i++)
            cout << p[i] << " ";
        cout << endl;
        return p;
    }
 
    bool** retPmatrix(int* p) {  
        for (int i = 0; i < numVertices; i++)
            for (int j = 0; j < numVertices; j++)
                Pmatrix[i][j] = false;
        for (int i = 0; i < numVertices; i++)
            Pmatrix[p[i]][i] = true;
        return Pmatrix;
    }
 
    bool** traspPmatrix(bool** Pmatrix) {
        bool** tPmatrix = new bool* [numVertices];
        for (int i = 0; i < numVertices; i++) {
            tPmatrix[i] = new bool[numVertices];
            for (int j = 0; j < numVertices; j++)
                tPmatrix[i][j] = Pmatrix[j][i];
        }
        return tPmatrix;
    }
 
    bool** mulMatrix(bool** A, bool** B) {
        bool** C = new bool* [numVertices];
        int i, j, k;
        for (i = 0; i < numVertices; i++) {
            C[i] = new bool[numVertices];
            for (j = 0; j < numVertices; j++)
                for (k = 0; k < numVertices; k++)
                    C[i][j] += A[i][k] * B[k][j];
        }
        return C;
    }
 
    void printMatrix(bool** Matrix) {
        for (int i = 0; i < numVertices; i++) {
            cout << i << " : ";
            for (int j = 0; j < numVertices; j++)
                cout << Matrix[i][j] << " ";
            cout << endl;
        }
        cout << endl;
    }
 
    ~Graph() {
        for (int i = 0; i < numVertices; i++)
            delete[] adjMatrix[i];
        delete[] adjMatrix;
    }
};
 
int main() {
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    Graph g1(4);
    //GRAPH1////////
    g1.addEdge(0, 1);
    g1.addEdge(0, 2);
    g1.addEdge(1, 2);
    g1.addEdge(2, 3);
    cout << "Матрица смежности графа А" << endl;
    g1.printMatrix(g1.getAdjMatrix());
    cout << "Матрица перестановки P" << endl;
    g1.printMatrix(g1.retPmatrix(g1.getP()));
    cout << "Умножение PA" << endl;
    g1.printMatrix(g1.mulMatrix(g1.retPmatrix(g1.getP()), g1.getAdjMatrix()));
}
Миниатюры
Функция умножения матриц неправильно считает  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.06.2021, 17:26
Ответы с готовыми решениями:

Функция неправильно считает сумму
Функция mean() (определение стр.84-96,вызов ф-ции стр.42) неправильно считает сумму.Все функции до...

Функция умножения матриц
Так получилось , что я решила перейти в другой вуз на другую специальность. Программирование - это...

Функция умножения матриц (библиотека какая-нибудь)
Есть функция перемножающая матрицы. Нужно ее переделать, так чтобы использовать какую-нибудь...

Функция поэлементного умножения матриц
Добрый день! Просмотрел много библиотек работы с матрицами, в том числе uBLAS. Нигде не могу найти...

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

Функция не считает русские символы (считает только латинские)
Функция .count из QString подсчитывает только английские буквы, когда пытаюсь заменить 'f' на любую...

Функция ПРОСМОТР считает неправильно
Не понимаю, почему считает не правильно. На втором листе справочная информация, оттуда должно...

функция неправильно считает элементы
Здравствуйте. Есть функция, которая ведет подсчет количества правильно выбранных radio в тесте. ...

Неправильно считает функция ResultSqr()
Здравствуйте. Программа не правильно считает функцию ResultSqr() из класса MonteCarlo. Не могу...

Функция СУММЕСЛИМН считает неправильно
доброго времени суток! в таблице ниже в ячейке J3 формула, которая меня интересует. в ячейке K3,...

Функция неправильно считает значение синуса
Доброго времени суток! Функция неправильно считает значение синуса. Не найду ошибку function...


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

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