C 類寫的矩陣計算

2021-03-31 08:56:31 字數 3778 閱讀 5361

#pragma once

#include "dibimage.h"

#include "exception.h"

//矩陣類-宣告

class matrix,,

,,

,};*/

matrix submatrix(long offset) ;//throw (exception &);

matrix submatrix(long x,long y,long widthoffset,long heightoffset);//取整數字置子區

//matrix submatrix(double x,double y,long widthoffset,long heightoffset);//取小數字置子區

void test();//測試函式

/***********過載部分-overloaded part*****************/

matrix operator+(matrix &);

matrix operator-(matrix &);

matrix operator*(matrix &);

friend matrix operator*(double alpha,matrix &);//實數與矩陣相乘

matrix operator*(double alpha);//矩陣與實數相乘

matrix operator/(matrix &);//實際是實數相除或矩陣和實數相除

matrix operator/(double sub);

matrix operator+=(matrix &);

matrix operator-=(matrix &);

matrix operator*=(matrix &);//矩陣與實數相乘

matrix operator*=(double alpha);//矩陣與實數相乘

matrix &operator=(matrix &);//賦值

double * operator(long heightpos);//用於實現用操作矩陣元素

friend matrix  sqrt(matrix m);//開方

friend double abs(matrix &);//取絕對值(泛數)

friend double sum(matrix &);//求和

friend matrix multiply(matrix &m1,matrix & m2);//按元素相乘

friend double operator+(double dbl,matrix &);

friend double operator+(matrix &,double dbl);

friend double operator-(double dbl,matrix &);

friend double operator-(matrix &,double dbl);

friend ostream & operator<<(ostream &,matrix &);//輸出

matrix(void);//預設建構函式

matrix(long n);//單位矩陣

matrix(dibimage & dibimage);//型別轉換(把影象檔案轉換成矩陣,用於影象計算處理)

matrix(double * arraddress,long arrwidth);//構造一維矩陣(一行,arrwidth列)

matrix(double * arraddress,long arrheight,long arrwidth);//構造二維矩陣

matrix(long height,long width);//構造空矩陣

matrix(const matrix &);//複製建構函式

virtual ~matrix(void);//預設析構函式

/***********過載部分-overloaded part*****************/

};#include "stdafx.h"

#include "./matrix.h"

//矩陣類-實現

#define sign(a,b) ((b) > 0 ? fabs(a) : -fabs(a))

matrix::matrix(void):width(1),height(1)

else if((x-widthoffset)<0 || (x+widthoffset)>width)else if((y-heightoffset)<0 || (y+heightoffset)>height)

assert(log);

matrix m(heightoffset*2+1,widthoffset*2+1);

for(long i=0;idouble matrix::deter()//矩陣的行列式

}return result;

}matrix  matrix::t()

x=a[nn][nn];

if (l == nn) else else

nn -= 2;

} else

++its;

for (m=(nn-2);m>=l;m--)

for (i=m+2;i<=nn;i++)

for (k=m;k<=nn-1;k++)

}if (s=sign(sqrt(p*p+q*q+r*r),p)) else

a[k][k-1] = -s*x;

p += s;

x=p/s;

y=q/s;

z=r/s;

q /= p;

r /= p;

for (j=k;j<=nn;j++)

a[k+1][j] -= p*y;

a[k][j] -= p*x;

}mmin = nninv()*this->deter();

}void matrix::unity()

}return;

}void matrix::store(const char * filename)

}if(d+1.0==1.0)

if(is[k] != k)

for(j=0;j=0; k--)

matrix matrix::operator +(matrix &m1)

else if(this->isvector() && !m1.isvector())else if(!this->isvector() && m1.isvector())else if(this->isvector() && m1.isvector() && width==m1.height)

double abs(matrix & m)

double operator+(double dbl,matrix & m)

double operator+(matrix & m,double dbl)

double operator-(double dbl,matrix & m)

double operator-(matrix & m,double dbl)

ostream & operator<<(ostream & os,matrix & m)

os<

}return os;

}matrix::~matrix(void)

void matrix::test(),,,};

matrix m1,m(&arr[0][0],4,4),m2(&arr[0][0],4,4);

m.isptv();

/*           

cout<<"arranger="<

cout<

}void matrix::info()

自己寫的c 大整數計算BigInt類

演算法使用vector儲存變數,使用乙個flug來儲存正負。過載的運算子有 還有string型別轉換運算子,輸出運算子 建構函式有預設建構函式 0 從string構造 支援開頭有無限個 號,但不支援正號 從bigint構造,從long long構造 從而可以支援大多數c 的基本型別 基本原理和手工列...

c語言寫蛇形矩陣

這道題我真的也弄了很久。演算法分析 首先我們把它分成上三角和下三角。我們可以把上三角賦值想這樣子1,2 3,4 5 6,7 8 9 10,11 12 13 14 15.第1次賦值是1次,第2次是2次,第3次是3次.所以外迴圈是n次,內迴圈次數等於該次輸出數字的最大行數。然後我們看奇數行和數行的行走的...

CMatrix類 矩陣類 C

pragma once class matrix 返回行 intcol const 返回列 void setsize int row,int col 調整陣列的大小,原有資料不變 未測試 double operator int row,int col 獲取矩陣元素 double operator i...