#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() 演算法使用vector儲存變數,使用乙個flug來儲存正負。過載的運算子有 還有string型別轉換運算子,輸出運算子 建構函式有預設建構函式 0 從string構造 支援開頭有無限個 號,但不支援正號 從bigint構造,從long long構造 從而可以支援大多數c 的基本型別 基本原理和手工列... 這道題我真的也弄了很久。演算法分析 首先我們把它分成上三角和下三角。我們可以把上三角賦值想這樣子1,2 3,4 5 6,7 8 9 10,11 12 13 14 15.第1次賦值是1次,第2次是2次,第3次是3次.所以外迴圈是n次,內迴圈次數等於該次輸出數字的最大行數。然後我們看奇數行和數行的行走的... pragma once class matrix 返回行 intcol const 返回列 void setsize int row,int col 調整陣列的大小,原有資料不變 未測試 double operator int row,int col 獲取矩陣元素 double operator i...自己寫的c 大整數計算BigInt類
c語言寫蛇形矩陣
CMatrix類 矩陣類 C