Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- int** createMatrix(int n, int m);
- class Matrix {
- int n, m;
- int** data;
- friend Matrix mult(const Matrix &a, const Matrix &b);
- public:
- Matrix () {}
- Matrix(int x, int y) : n(x), m(y) { data = createMatrix(n, m); }
- Matrix operator * (const Matrix &x) { return mult(*this, x); }
- void get(char c);
- void set(char c);
- };
- int main() {
- int an, am, bn, bm;
- cout << "Enter size of matrix A: ";
- cin >> an >> am;
- cout << "Enter size of matrix B: ";
- cin >> bn >> bm;
- Matrix a(an, am), b(bn, bm);
- a.set('A');
- b.set('B');
- Matrix c;
- c = a * b;
- c.get('C');
- return 0;
- }
- Matrix mult(const Matrix &a, const Matrix &b) {
- int n = a.n,
- m = b.m;
- int sum;
- if (a.m != b.n) {
- exit(1);
- cout << "Error" << endl;
- }
- Matrix c(n, m);
- for (int i = 0; i < n; i++) {
- for (int j = 0; j < m; j++) {
- sum = 0;
- for (int k = 0; k < a.m; k++) {
- sum += a.data[i][k] * b.data[k][j];
- }
- c.data[i][j] = sum;
- }
- }
- return c;
- }
- int** createMatrix(int n, int m) {
- int** matrix = new int* [n];
- for (int i = 0; i < n; i++) {
- matrix[i] = new int [m];
- }
- return matrix;
- }
- void Matrix :: set(char c) {
- cout << "Enter matrix " << c << " [" << n << "x" << m << "]:" << endl;
- for (int i = 0; i < n; i++) {
- cout << "\t";
- for (int j = 0; j < m; j++) {
- cin >> data[i][j];
- }
- }
- return;
- }
- void Matrix :: get(char c) {
- cout << "Matrix "<< c << " [" << n << "x" << m << "]:" << endl;
- for (int i = 0; i < n; i++) {
- cout << "\t";
- for (int j = 0; j < m; j++) {
- cout << data[i][j] << " ";
- }
- cout << endl;
- }
- return;
- }
Add Comment
Please, Sign In to add comment