All pastes #732542 Raw Edit

Miscellany

public text v1 · immutable
·published 2007-10-11 02:21 UTC
rendered paste body
//matrix implementation
#include "matrix.h"
#include <cstdlib>
#include <iostream>
using namespace std;

matrix::matrix(int rows,int columns){
    numrows=rows;
    numcolumns=columns;
    elements=new double *[rows];
    for (int i = 0; i < rows; i++){
        elements[i] = new double [columns];
    }
    //initalize to 0
    for(int i=0;i<numrows;i++){
            for(int j=0;j<numcolumns;j++){
            elements[i][j]=1;
            }
        }
}

matrix::~matrix(){
    delete elements;
}

const double matrix::get_numrows(){
      return numrows;
      }
      
const double matrix::get_numcolumns(){
      return numcolumns;
      }
      
const double matrix::get_element(int row,int column){
    return elements[row][column];
}

void matrix::set_element(int row,int column,double value){
    elements[row][column]=value;
}

void matrix::add(matrix &matrix1,matrix &matrix2){
    if (numrows==matrix1.numrows && numrows==matrix2.numrows && numcolumns==matrix1.numcolumns && numcolumns==matrix2.numcolumns){
        for(int i=0;i<numrows;i++){
            for(int j=0;j<numcolumns;j++){
                     //DEBUG cout<<matrix2.get_element(i,j);
                     elements[i][j]=matrix1.get_element(i,j)+matrix2.get_element(i,j);
                     //DEBUG cout<<elements[i][j];
            }
        }
    }
    else{
        cout<<"Matrices are of improper sizes for addition."<<endl;
    }
}
void matrix::subtract(matrix &matrix1,matrix &matrix2){    
    if (numrows==matrix1.numrows && numrows==matrix2.numrows && numcolumns==matrix1.numcolumns && numcolumns==matrix2.numcolumns){
        for(int i=0;i<numrows;i++){
            for(int j=0;j<numcolumns;j++){
            elements[i][j]=matrix1.get_element(i,j)-matrix2.get_element(i,j);
            }
        }
    }
    else{
        cout<<"Matrices are of improper sizes for subtraction."<<endl;
    }
}
     
void matrix::operator=(matrix matrix1){
     //cout<<"fuck"<<endl;
     for(int i=0;i<numrows;i++){
            for(int j=0;j<numcolumns;j++){
                    //cout<<"fuck"<<endl;
                    this->set_element(i,j,matrix1.get_element(i,j));
            }
        }
     
}
     
matrix matrix::operator+(matrix &matrix1){
   if (numrows==matrix1.numrows && numcolumns==matrix1.numcolumns){
   matrix x(numrows, numcolumns);
        for(int i=0;i<numrows;i++){
            for(int j=0;j<numcolumns;j++){
                     x.elements[i][j]=get_element(i,j)+matrix1.get_element(i,j);
                     //DEBUG cout<<x.elements[i][j];
            }
        }
   x.display();
   return x;
    }
    else{
        cout<<"Matrices are of improper sizes for addition."<<endl;
    }
}
     
matrix matrix::operator-(matrix &matrix1){
        if (numrows==matrix1.numrows && numcolumns==matrix1.numcolumns){
   matrix x(numrows, numcolumns);
        for(int i=0;i<numrows;i++){
            for(int j=0;j<numcolumns;j++){
                     x.elements[i][j]=get_element(i,j)-matrix1.get_element(i,j);
                     //DEBUG cout<<x.elements[i][j];
            }
        }
   x.display();
   return x;
    }
    else{
        cout<<"Matrices are of improper sizes for addition."<<endl;
    }
}
void matrix::display(){
    cout<<"\n";
    for(int i=0;i<numrows;i++){
        cout<<"{";
        for(int j=0;j<numcolumns;j++){
            cout<<elements[i][j]<<"\t";     
        }
        cout<<"}"<<endl;
    }
}