Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- using namespace std;
- class Matrix {
- public:
- int size;
- vector<vector<int>> m;
- Matrix() {
- this->size = 0;
- }
- Matrix(vector<vector<int>> m) {
- int n = m.size();
- for (int i = 0; i < n; ++ i) {
- if (m[i].size() != n) {
- n = -1;
- break;
- }
- }
- if (n == -1) {
- cout << "Init Error\n";
- this->size = 0;
- }
- else {
- this->size = m.size();
- this->m = m;
- }
- }
- void print() {
- for (int i = 0; i < this->size; ++ i) {
- for (int j = 0; j < this->size; ++ j)
- cout << this->m[i][j] << " ";
- cout << endl;
- }
- }
- bool sim() {
- for (int i = 0; i < size; ++ i) {
- for (int j = 0; j < size; ++ j) {
- if (m[i][j] != m[j][i])
- return false;
- }
- }
- return true;
- }
- ~Matrix() {}
- Matrix operator+(Matrix M) {
- if (this->size != M.size) {
- cout << "op+ Error\n";
- return Matrix();
- }
- for (int i = 0; i < this->size; ++ i)
- for (int j = 0; j < this->size; ++ j)
- this->m[i][j] += M.m[i][j];
- return Matrix(this->m);
- }
- Matrix operator-(Matrix M) {
- if (this->size != M.size) {
- cout << "op- Error\n";
- return Matrix();
- }
- for (int i = 0; i < this->size; ++ i)
- for (int j = 0; j < this->size; ++ j)
- this->m[i][j] -= M.m[i][j];
- return Matrix(this->m);
- }
- Matrix operator*(Matrix M) {
- if (this->size != M.size) {
- cout << "op* Error\n";
- return Matrix();
- }
- vector<vector<int>> m;
- for (int i = 0; i < this->size; ++ i) {
- m.push_back(vector<int>());
- for (int j = 0; j < this->size; ++ j) {
- int s = 0;
- for (int k = 0; k < this->size; ++ k)
- s += this->m[i][k] * M.m[k][j];
- m[i].push_back(s);
- }
- }
- return Matrix(m);
- }
- Matrix operator*=(int n) {
- vector<vector<int>> m = this->m;
- for (int i = 0; i < this->size; ++ i)
- for (int j = 0; j < this->size; ++ j)
- m[i][j] *= n;
- return Matrix(m);
- }
- };
- int main(void) {
- int n = 3;
- vector<vector<int>> v1(n, vector<int>(n)), v2(n, vector<int>(n));
- v1[0][0] = 2;
- v1[0][1] = 3;
- v1[0][2] = 4;
- v1[1][0] = 1;
- v1[1][1] = -2;
- v1[1][2] = 0;
- v1[2][0] = 0;
- v1[2][1] = 1;
- v1[2][2] = 2;
- v2[0][0] = 2;
- v2[0][1] = 0;
- v2[0][2] = -2;
- v2[1][0] = 1;
- v2[1][1] = 1;
- v2[1][2] = 0;
- v2[2][0] = 1;
- v2[2][1] = -1;
- v2[2][2] = 1;
- Matrix a(v1), b(v2), x;
- x = (a *= 2) * (a + b) - (a *= 3) * b;
- x.print();
- return 0;
- }
Advertisement
RAW Paste Data
Copied
Advertisement