Metrix C++

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 4

#include "matrix.

h"
#include<iostream>
using namespace std;
void Matrix::setUp(int a, int b)
{
row = a;
col = b;
}
Matrix::Matrix()
{
setUp(2, 2);
data = new Complex*[2];
for (int c = 0; c < 2; c++)
{
data[c] = new Complex[2];
}
for (int c = 0; c < 2; c++)
{
for (int ca = 0; ca < 2; ca++)
{
data[c][ca] = Complex(1,2);
}
}
}
Matrix::Matrix(int r, int c)
{
setUp(r, c);
data = new Complex*[row];
for (int c = 0; c < row; c++)
{
data[c] = new Complex[col];
}
}
Matrix::Matrix(int a, int b, Complex arr[], int length)
{
setUp(a, b);
data = new Complex*[b];
for (int c = 0; c < a; c++)
{
data[c] = new Complex[b];
}
if (a*b == length)
{
int counter = 0;
for (int ca = 0; ca < a; ca++)
{
for (int cal = 0; cal < b; cal++)
{
data[ca][cal] = arr[counter];
counter++;
}
}
}
}
Matrix::Matrix(const Matrix & matrixToCopy)
{
setUp(matrixToCopy.row, matrixToCopy.col);
data = new Complex*[row];
for (int c = 0; c < row; c++)
{
data[c] = new Complex[col];
}
for (int ca = 0; ca < row; ca++)
{
for (int cal = 0; cal < col; cal++)
{
data[ca][cal] = matrixToCopy.data[ca][cal];
}
}
}
Matrix::~Matrix()
{
delete[] data;
}
void Matrix::setData(int a, int b,const Complex & c)
{
data[a - 1][b - 1] = c;
}
int Matrix::getRow() const
{
return row;
}
int Matrix::getCol() const
{
return col;
}
Complex Matrix::getData(int a, int b)const
{
return data[a - 1][b - 1];
}
Matrix Matrix::add(const Matrix & mat)
{
Matrix m(row, col);
if (row == mat.row&&col == mat.col)
{
for (int c = 0; c < row; c++)
{
for (int ca = 0; ca < col; ca++)
{
m.data[c][ca] = data[c][ca] + mat.data[c][ca];
}
}
}
return m;
delete[]m.data;

cout << "can't add" << endl;


}
Matrix Matrix::multiply(const Matrix & mat)
{
Matrix m(row, mat.col);
if (col == mat.row)
{
for (int c = 0; c < row; c++)
{
for (int ca = 0; ca < mat.col; ca++)
{
Complex s(0,0);
for (int cal = 0; cal < col; cal++)
{
s = data[c][cal] * mat.data[cal][ca] + s;
}
m.data[c][ca] = s;
}
}
}
return m;
}
Matrix Matrix::transpose()
{
Matrix m(col, row);
for (int c = 0; c < row; c++)
{
for (int ca = 0; ca < col; ca++)
{
m.data[c][ca] = data[ca][c];
}
}
return m;

You might also like