Advertisement
Guest User

Untitled

a guest
Jun 19th, 2014
273
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.12 KB | None | 0 0
  1. //
  2. //Autor: Michael Neunteufel
  3. //Version 01
  4. //
  5. #include "matrix.h"
  6.  
  7.  
  8. Matrix::Matrix(void)
  9.     : elements(NULL), m(0), n(0)
  10. {
  11. }
  12.  
  13. Matrix::Matrix(unsigned int m, unsigned int n)
  14.     : elements(NULL), m(m), n(n)
  15. {
  16.     elements = new double[m*n];
  17.  
  18.     for(unsigned int i = 0; i < m*n; i++) //nullmatrix erstellen
  19.         elements[i] = 0.0;
  20. }
  21.  
  22. Matrix::Matrix(const Matrix& matrix)
  23.     : elements(NULL), m(matrix.m), n(matrix.n)
  24. {
  25.     elements = new double[m*n];
  26.  
  27.     for(unsigned int i = 0; i < m*n; i++)
  28.         elements[i] = matrix.elements[i];
  29. }
  30.  
  31. Matrix& Matrix::operator=(const Matrix& matrix)
  32. {
  33.     if(elements != NULL)
  34.     {
  35.         delete [] elements;//freigeben von dynamischen arrays
  36.         elements = NULL;
  37.     }
  38.  
  39.     m = matrix.m;
  40.     n = matrix.n;
  41.  
  42.     elements = new double[m*n];
  43.  
  44.     for(unsigned int i = 0; i < m*n; i++)
  45.         elements[i] = matrix.elements[i];
  46.  
  47.     return (*this);
  48. }
  49.  
  50. Matrix::~Matrix(void) // setzt alles ursprüngliche werte
  51. {
  52.     if(elements != NULL)
  53.     {
  54.         delete [] elements;
  55.         elements = NULL;
  56.     }
  57.  
  58.     m = 0;
  59.     n = 0;
  60. }
  61. double& Matrix::operator[](int j)
  62. {
  63.     if((j < 0 || j > m*n))
  64.     {
  65.         cout << "Falscher Index!" << endl;
  66.         return elements[0];
  67.     }
  68.     else
  69.         return elements[j];
  70. }
  71.  
  72. const double& Matrix::operator[](int j) const
  73. {
  74.     if(j < 0 || j > m*n)
  75.     {
  76.         cout << "Falscher Index!" << endl;
  77.         return elements[0];
  78.     }
  79.     else
  80.         return elements[j];
  81. }
  82.  
  83. void Matrix::setEntry(unsigned int i, unsigned int j, double d)
  84. {
  85.     if( i >= m || j >= n)
  86.     {
  87.         cout << "Falsche Indizes!" << endl;
  88.     }
  89.     else
  90.         elements[j*m + i] = d;//Spaltenweise speichern
  91. }
  92.  
  93. double Matrix::getEntry(unsigned int i, unsigned int j) const
  94. {
  95.     if( i >= m || j >= n)
  96.     {
  97.         cout << "Falsche Indizes!" << endl;
  98.         return 0.0;
  99.     }
  100.     else
  101.         return elements[j*m + i];//Spaltenweise gespeichert
  102. }
  103.  
  104. void Matrix::print(void) const
  105. {
  106.     for(unsigned int i = 0; i < m; i++)
  107.     {
  108.         for(unsigned int j = 0; j < n; j++)
  109.         {
  110.             cout << elements[j*m + i] << " | ";
  111.         }
  112.         cout << endl;
  113.     }
  114.     cout << endl;
  115. }
  116.  
  117. int Matrix::getSize(void) const //getter
  118. {
  119.     return m*n;
  120. }
  121.  
  122.  
  123.  
  124. const Matrix Matrix::operator+(const Matrix mat) const //NEU
  125. {
  126.     Matrix newMatrix(m,n);
  127.  
  128.     if(m*n != mat.getSize())
  129.     {
  130.         cout << "Falsche Dimensionen!" << endl;
  131.         return newMatrix;
  132.     }
  133.  
  134.     for(int i = 0; i < m; i++) {
  135.  
  136.     for(int j = 0; j < n; j++) {
  137.    
  138.         newMatrix[j*m+i] = elements[j*m+i] + mat[j*m+i];
  139.     }
  140. }
  141.  
  142.     return newMatrix;
  143. }
  144.  
  145. const Matrix Matrix::operator*(const Matrix mat) const // NEU
  146. {
  147.     Matrix newMatrix(m,n);
  148.  
  149.     if(m*n != mat.getSize())
  150.     {
  151.         cout << "Falsche Dimensionen!" << endl;
  152.         return newMatrix;
  153.     }
  154.  
  155.    for(int i = 0; i < m; i++) {
  156.  
  157.     for(int j = 0; j < n; j++) {
  158.    
  159.         newMatrix[j*m+i] = elements[j*m+i] * mat[j*m+i];
  160.     }
  161. }
  162.     return newMatrix;
  163. }
  164.  
  165.  
  166. void Matrix::scan(void)
  167. {
  168.     cout << "Matrix der Form " << m << "x" << n << "eingeben:" << endl;
  169.     for(unsigned int i = 0; i < m; i++)
  170.     {
  171.         for(unsigned int j = 0; j < n; j++)
  172.         {
  173.             cout << "(" << i << "|" << j << ")" << ":";
  174.             cin >> elements[j*m + i];
  175.         }
  176.     }
  177. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement