C++实现矩阵加减乘求转置
生活随笔
收集整理的這篇文章主要介紹了
C++实现矩阵加减乘求转置
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一、需求如下:
二、代碼如下:
#include<vector> #include<iostream> using namespace std; class Matrix { public:vector<vector<int>> oneMatrix;Matrix transposing();Matrix operator+(const Matrix& matrix);Matrix operator-(const Matrix& matrix);Matrix operator*(const Matrix& matrix);void display(); };int main() {Matrix A;A.oneMatrix = { { 1,2 },{ 3,4 } };Matrix B;B.oneMatrix = { {1,3},{3,2} };Matrix C;C.oneMatrix = { {1,3,1},{3,2,2} };//A的裝置矩陣cout << "A的轉(zhuǎn)置矩陣為:" << endl;A.transposing().display();//C的裝置矩陣cout << "\n\nC的轉(zhuǎn)置矩陣為:" << endl;C.transposing().display();//A+A的裝置cout << "\n\nA+A的裝置:" << endl;Matrix res;res = A + A.transposing();res.display();//(A + A.transposing()).display();//A+Ccout << "\n\nA+C:" << endl;(A + C).display();//A-Bcout << "\n\nA-B:" << endl;(A - B).display();//CAcout << "\n\nCA:" << endl;if (C.oneMatrix[0].size() == A.oneMatrix.size()) {(C*A).display();}else {cout << "矩陣無法進行計算!" << endl;}//ACcout << "\n\nAC" << endl;(A*C).display();//C的裝置乘以Ccout << "\n\nC的裝置乘以C" << endl;(C.transposing()*C).display();return 0; }Matrix Matrix::transposing() {Matrix res;vector<vector<int>> temp(oneMatrix[0].size(),vector<int>(oneMatrix.size()));res.oneMatrix = temp;for (int i = 0; i < oneMatrix.size(); i++){for (int j = 0; j < oneMatrix[i].size(); j++) {res.oneMatrix[j][i] = oneMatrix[i][j];}}return res; }Matrix Matrix::operator+(const Matrix& matrix) {Matrix res;vector<vector<int>> temp(oneMatrix.size(), vector<int>(oneMatrix[0].size()));res.oneMatrix = temp;for (int i = 0; i < oneMatrix.size(); i++) {for (int j = 0; j < oneMatrix[i].size(); j++) {res.oneMatrix[i][j] = oneMatrix[i][j] + matrix.oneMatrix[i][j];}}return res; }Matrix Matrix::operator-(const Matrix& matrix) {Matrix res;vector<vector<int>> temp(oneMatrix.size(), vector<int>(oneMatrix[0].size()));res.oneMatrix = temp;for (int i = 0; i < oneMatrix.size(); i++) {for (int j = 0; j < oneMatrix[i].size(); j++) {res.oneMatrix[i][j] = oneMatrix[i][j] - matrix.oneMatrix[i][j];}}return res; }Matrix Matrix::operator*(const Matrix& matrix) {int row = oneMatrix.size();int col = matrix.oneMatrix[0].size();vector<vector<int>> temp(row, vector<int>(col));Matrix res;res.oneMatrix = temp;for (int i = 0; i < row; i++){for (int j = 0; j < col; j++){res.oneMatrix[i][j] = 0;for (int k = 0; k < oneMatrix[0].size(); k++) {res.oneMatrix[i][j] += oneMatrix[i][k] * matrix.oneMatrix[k][j];}}}return res; }void Matrix::display() {for (int i = 0; i < oneMatrix.size(); i++) {for (int j = 0; j < oneMatrix[i].size(); j++) {cout << oneMatrix[i][j] << "\t";}cout << endl;} }三、結(jié)果如下:
總結(jié)
以上是生活随笔為你收集整理的C++实现矩阵加减乘求转置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python pandas爬取网页成绩表
- 下一篇: GRPC java实现demo