⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 my_mat.cpp

📁 统计学习软件包
💻 CPP
字号:
#include <iostream.h>#include <math.h>#include <stdio.h>#include <stdlib.h>#include <assert.h>#include "my_mat.h"My_Matrix::My_Matrix(int mSizeR, int mSizeC){   int i; int j; int k;   sizeR = mSizeR;   sizeC = mSizeC;      ptr = new double*[sizeR];   assert(ptr != 0);   for ( k = 0; k < sizeR; k++){         ptr[k] = new double[sizeC];       assert(ptr[k] != 0);  // terminate if memory not allocated   }   for (i = 0; i < sizeR; i++)     for (j = 0; j < sizeC; j++)	 ptr[i][j] = 0.;            // initialize array}My_Matrix::~My_Matrix(){    int i;  for( i = 0; i < sizeR; i++)    delete [] ptr[i];  delete [] ptr;}void My_Matrix::Enlarge(int r, int c){    int i,j,k;    double** ptr_buff;    ptr_buff = new double*[sizeR];    for ( k = 0; k < sizeR; k++){  	 ptr_buff[k] = new double[sizeC];     }    for (i = 0; i < sizeR; i++)	for (j = 0; j < sizeC; j++)	    ptr_buff[i][j] = ptr[i][j];        for( i = 0; i < sizeR; i++)	delete [] ptr[i];    delete [] ptr;            ptr = new double*[r];    assert(ptr != 0);    for ( k = 0; k < r; k++){  	ptr[k] = new double[c];	assert(ptr[k] != 0);  // terminate if memory not allocated    }        int min_r, min_c;    if(sizeR > r)	min_r = r;    else	min_r = sizeR;    if(sizeC > c)	min_c = c;    else	min_c = sizeC;    for (i = 0; i < min_r; i++){	for (j = 0; j < min_c; j++)	    ptr[i][j] = ptr_buff[i][j];  	for (j = min_c; j < c; j++)	    ptr[i][j] = 0.0;    }    for (i = min_r; i < r; i++)	for (j = 0; j < c; j++)	    ptr[i][j] = 0.0;        for( i = 0; i < sizeR; i++)	delete [] ptr_buff[i];    delete [] ptr_buff;        sizeR = r;    sizeC = c;    }void My_Matrix::ReDimension(int r, int c){    int i,j;        for(i = 0; i < sizeR; i++)	delete [] ptr[i];            delete [] ptr;         sizeR = r;       sizeC = c;           ptr = new double*[sizeR];         for (j = 0; j < sizeR; j++){	ptr[j] = new double[sizeC];     }}// Overloaded subscript operatordouble *My_Matrix::operator[](int subscript){   return ptr[subscript];    }const My_Matrix &My_Matrix::operator=(const My_Matrix &right){   int i,j,k,l,m;   if (&right != this) {    // check for self-assignment         for(i = 0; i < sizeR; i++)	 delete [] ptr[i];                  delete [] ptr;              sizeR = right.sizeR;    // resize this object       sizeC = right.sizeC;              ptr = new double*[sizeR];            for (j = 0; j < sizeR; j++){	   ptr[j] = new double[sizeC];  // create space for My_Matrix copy	   assert(ptr[j] != 0);     // terminate if memory not allocated	 }       for (k = 0; k < sizeR; k++){	   for (l = 0; l < sizeC; l++)	       ptr[k][l] = right.ptr[k][l];  // copy My_Matrix into object	 }     }      return *this;   // enables x = y = z;}ostream &operator<<(ostream &output, const My_Matrix &m){ int i; int j;   for (i = 0; i < m.sizeR; i++)      {       for (j = 0; j < m.sizeC; j++)	 output << m.ptr[i][j] << ' ';       output << endl;     }   return output;   // enables cout << x << y;}istream &operator>>(istream &input, My_Matrix &m){ int i; int j;   for (i = 0; i < m.sizeR; i++)        for (j = 0; j < m.sizeC; j++)	 input >> m.ptr[i][j] ;               return input;   // enables cout << x << y;} int My_Matrix::getSizeR() const { return sizeR; }int My_Matrix::getSizeC() const { return sizeC; }int My_Matrix::Nrows() const { return sizeR; }int My_Matrix::Ncols() const { return sizeC; }void mult( My_Matrix &a,  My_Matrix &b, My_Matrix &mn){  int i, j, k;  double sum = 0;  if(a.sizeC!= b.sizeR )    cout << "Wrong Size" << endl;  int ra = a.sizeR;   int cb = b.sizeC;   int ca = a.sizeC;  My_Matrix prod(ra,cb);       for(i = 0; i < ra; i++)    {      for(j = 0; j < cb; j++)	{	  sum = 0;	  for(k = 0; k < ca; k++) 	    sum += a[i][k] * b[k][j];	  prod[i][j] = sum; 	}    }   mn = prod;  }void transpose(My_Matrix &a, My_Matrix &at){    int i, j;    int nr = a.sizeR;     int nc = a.sizeC;    My_Matrix tra(nc,nr);     for(i = 0; i < nr; i++)      {      	for(j = 0; j < nc; j++)	  {          	tra[j][i] = a[i][j];           }      }     at = tra;     }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -