Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- //Autor: Michael Neunteufel
- //Version 01
- //
- #include "matrix.h"
- Matrix::Matrix(void)
- : elements(NULL), m(0), n(0)
- {
- }
- Matrix::Matrix(unsigned int m, unsigned int n)
- : elements(NULL), m(m), n(n)
- {
- elements = new double[m*n];
- for(unsigned int i = 0; i < m*n; i++) //nullmatrix erstellen
- elements[i] = 0.0;
- }
- Matrix::Matrix(const Matrix& matrix)
- : elements(NULL), m(matrix.m), n(matrix.n)
- {
- elements = new double[m*n];
- for(unsigned int i = 0; i < m*n; i++)
- elements[i] = matrix.elements[i];
- }
- Matrix& Matrix::operator=(const Matrix& matrix)
- {
- if(elements != NULL)
- {
- delete [] elements;//freigeben von dynamischen arrays
- elements = NULL;
- }
- m = matrix.m;
- n = matrix.n;
- elements = new double[m*n];
- for(unsigned int i = 0; i < m*n; i++)
- elements[i] = matrix.elements[i];
- return (*this);
- }
- Matrix::~Matrix(void) // setzt alles ursprüngliche werte
- {
- if(elements != NULL)
- {
- delete [] elements;
- elements = NULL;
- }
- m = 0;
- n = 0;
- }
- double& Matrix::operator[](int j)
- {
- if((j < 0 || j > m*n))
- {
- cout << "Falscher Index!" << endl;
- return elements[0];
- }
- else
- return elements[j];
- }
- const double& Matrix::operator[](int j) const
- {
- if(j < 0 || j > m*n)
- {
- cout << "Falscher Index!" << endl;
- return elements[0];
- }
- else
- return elements[j];
- }
- void Matrix::setEntry(unsigned int i, unsigned int j, double d)
- {
- if( i >= m || j >= n)
- {
- cout << "Falsche Indizes!" << endl;
- }
- else
- elements[j*m + i] = d;//Spaltenweise speichern
- }
- double Matrix::getEntry(unsigned int i, unsigned int j) const
- {
- if( i >= m || j >= n)
- {
- cout << "Falsche Indizes!" << endl;
- return 0.0;
- }
- else
- return elements[j*m + i];//Spaltenweise gespeichert
- }
- void Matrix::print(void) const
- {
- for(unsigned int i = 0; i < m; i++)
- {
- for(unsigned int j = 0; j < n; j++)
- {
- cout << elements[j*m + i] << " | ";
- }
- cout << endl;
- }
- cout << endl;
- }
- int Matrix::getSize(void) const //getter
- {
- return m*n;
- }
- const Matrix Matrix::operator+(const Matrix mat) const //NEU
- {
- Matrix newMatrix(m,n);
- if(m*n != mat.getSize())
- {
- cout << "Falsche Dimensionen!" << endl;
- return newMatrix;
- }
- for(int i = 0; i < m; i++) {
- for(int j = 0; j < n; j++) {
- newMatrix[j*m+i] = elements[j*m+i] + mat[j*m+i];
- }
- }
- return newMatrix;
- }
- const Matrix Matrix::operator*(const Matrix mat) const // NEU
- {
- Matrix newMatrix(m,n);
- if(m*n != mat.getSize())
- {
- cout << "Falsche Dimensionen!" << endl;
- return newMatrix;
- }
- for(int i = 0; i < m; i++) {
- for(int j = 0; j < n; j++) {
- newMatrix[j*m+i] = elements[j*m+i] * mat[j*m+i];
- }
- }
- return newMatrix;
- }
- void Matrix::scan(void)
- {
- cout << "Matrix der Form " << m << "x" << n << "eingeben:" << endl;
- for(unsigned int i = 0; i < m; i++)
- {
- for(unsigned int j = 0; j < n; j++)
- {
- cout << "(" << i << "|" << j << ")" << ":";
- cin >> elements[j*m + i];
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement