summaryrefslogtreecommitdiff
path: root/c,cc/matrix.cc
diff options
context:
space:
mode:
authorPatrick Simianer <p@simianer.de>2014-06-15 03:50:12 +0200
committerPatrick Simianer <p@simianer.de>2014-06-15 03:50:12 +0200
commit258e1b92ebbfdebefabc120969ab87c3d8b75c3d (patch)
treeef4ab11fe0bf9d720cea23b35711358a8465feeb /c,cc/matrix.cc
parentcf3a29feb5887344b6633ead1b4b6d5657a15a4b (diff)
old c,cc examples
Diffstat (limited to 'c,cc/matrix.cc')
-rw-r--r--c,cc/matrix.cc210
1 files changed, 210 insertions, 0 deletions
diff --git a/c,cc/matrix.cc b/c,cc/matrix.cc
new file mode 100644
index 0000000..9d1a1c0
--- /dev/null
+++ b/c,cc/matrix.cc
@@ -0,0 +1,210 @@
+#include <iostream>
+#include <stdlib.h>
+
+using namespace std;
+
+
+class MyMatrix
+{
+ public:
+ MyMatrix(int dimension);
+ MyMatrix(int rows, int columns);
+ ~MyMatrix();
+
+ void print();
+ int get_rows();
+ int get_columns();
+
+ double get_element(int row, int column);
+ void set_element(int row, int column, double value);
+
+ MyMatrix operator + (MyMatrix A);
+ MyMatrix operator * (MyMatrix A);
+ void operator = (MyMatrix A);
+
+
+ private:
+ double* m;
+ int row_d;
+ int col_d;
+ int d;
+};
+
+MyMatrix::MyMatrix(int dimension)
+{
+ row_d = dimension;
+ col_d = dimension;
+ d = dimension*dimension;
+ m = new double[d];
+
+ unsigned int k=0;
+ for(unsigned int i=0; i<row_d; i++) {
+ for(unsigned int j=0; j<col_d; j++) {
+ if(i==j) {
+ m[k] = 1;
+ } else {
+ m[k] = 0;
+ }
+ k++;
+ }
+ }
+}
+
+MyMatrix::MyMatrix(int rows, int columns)
+{
+ row_d = rows;
+ col_d = columns;
+ d = rows*columns;
+ m = new double[d];
+
+
+ srand(time(NULL));
+ for(unsigned int i=0; i<d; i++) {
+ m[i] = 1+(rand()%(100-1+1));
+ }
+}
+
+MyMatrix::~MyMatrix()
+{
+ delete[] m;
+}
+
+void MyMatrix::print()
+{
+ unsigned int k=0;
+ for(unsigned int i=0; i<row_d; i++) {
+ for(unsigned int j=0; j<col_d; j++) {
+ cout << m[k] << " ";
+ k++;
+ }
+ cout << endl;
+ }
+}
+
+int MyMatrix::get_rows()
+{
+ return row_d;
+}
+
+int MyMatrix::get_columns()
+{
+ return col_d;
+}
+
+
+double MyMatrix::get_element(int row, int column)
+{
+ // first element is 1,1!
+ if((row*column)<=0) {
+ return -1;
+ }
+ return m[((row-1)*col_d)+(column-1)];
+}
+
+void
+MyMatrix::set_element(int row, int column, double value)
+{
+ if((row*column)>0) {
+ m[((row-1)*col_d)+(column-1)] = value;
+ }
+}
+
+
+MyMatrix
+MyMatrix::operator + (MyMatrix A)
+{
+ MyMatrix* res = new MyMatrix(row_d, col_d);
+
+ unsigned int k=0;
+ for(unsigned int i=0; i<row_d; i++) {
+ for(unsigned int j=0; j<col_d; j++) {
+ res->m[k] = m[k]+A.get_element(i+1, j+1);
+ k++;
+ }
+ }
+
+ return *res;
+}
+
+MyMatrix MyMatrix::operator * (MyMatrix A)
+{
+ MyMatrix* res = new MyMatrix(row_d, col_d);
+
+ unsigned int k=0;
+ for(unsigned int i=0; i<row_d; i++) {
+ for(unsigned int j=0; j<col_d; j++) {
+ res->m[k] = m[k]*A.get_element(i+1, j+1);
+ k++;
+ }
+ }
+
+ return *res;
+}
+
+void MyMatrix::operator = (MyMatrix A)
+{
+ unsigned int k=0;
+ for(unsigned int i=0; i<A.get_rows(); i++) {
+ for(unsigned int j=0; j<A.get_columns(); j++) {
+ m[k] = A.get_element(i+1, j+1);
+ k++;
+ }
+ }
+}
+
+
+int main (int argc, char* const argv[]) {
+ cout << "9x9 identity matrix:" << endl;
+ MyMatrix* m = new MyMatrix(9);
+ m->print();
+
+ cout << " rows: " << m->get_rows() << ", ";
+ cout << "columns: " << m->get_columns() << endl;
+
+ delete m;
+
+
+ cout << endl << "2x5 matrix:" << endl;
+ MyMatrix n(2,5);
+ n.print();
+
+ cout << " rows: " << n.get_rows() << ", ";
+ cout << "columns: " << n.get_columns() << endl;
+
+ cout << "(1,3) = " << n.get_element(1,3) << endl;
+
+ cout << "last: (2,5) = " << n.get_element(2,5) << endl;
+
+ cout << "second to last element = 100: " << endl;
+ n.set_element(2, 4, 100);
+ n.print();
+
+ cout << endl << "addition:" << endl;
+ cout << "matrix 1:" << endl;
+ MyMatrix* a1 = new MyMatrix(3,3);
+ a1->print();
+ cout << "matrix 2:" << endl;
+ MyMatrix* a2 = new MyMatrix(3,3);
+ a2->print();
+ cout << "result:" << endl;
+ MyMatrix* e1 = new MyMatrix(3,3);
+ *e1 = *a1+*a2;
+ e1->print();
+ delete e1;
+
+ cout << endl << "multiplication" << endl;
+ cout << "matrix 1:" << endl;
+ MyMatrix* m1 = new MyMatrix(3,3);
+ a1->print();
+ cout << "matrix 2:" << endl;
+ MyMatrix* m2 = new MyMatrix(3,3);
+ m2->print();
+ cout << "result:" << endl;
+ MyMatrix* e2 = new MyMatrix(3,3);
+ *e2 = *m1 * *m2;
+ e2->print();
+ delete e2;
+
+ return 0;
+}
+