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

📄 trimat.h

📁 数据结构头文件源代码
💻 H
字号:
template<class T>
class TriMat
{
	private:
		T arr [MaxEleNum];
		int rowTable[MaxRowNum];
		int n;
	public:
		TriMat(int matSize);
		~Trimat(void){};

		void PutEle(T item,int i,intj);
		T GetEle(int i,int j)const;
		TriMat<T>operator+(const TriMat<T>&a)const;
		TriMat<T>operator-(const TriMat<T>&a)const;
		TriMat<T>operator*(const TriMat<T>&a)const;

		void ReadMat(void);
		void WriteMat(void)const;

		int GetDim(void)const
		{return n;};
};


 template <class T>
	 TriMat<T>::TriMat(int matSize)
 {
	 int storedEles=0;

	 if(matSize>MaxRowNum0)
	 {
		 cout<<"矩阵的阶数超过了上限"<<MaxRowNum<<endl;
		 exit(0);
	 }

	 n=matSize;

	 for (int i=0;i<n;i++)
	 {
		 rowTable[i]=storedEles;
		 storedEles+=n-i;
	 }
 }

 template <class T>
	 void TriMat<T>::PutEle(T item,int i,int j)
 {
	 if((i<1||i>n)||(j<1||j>n))
	 {
		 cout<<"数组下标越界"<<endl;
		 exit(0);
	 }

	 if(j>=1)arr[rowTable[i-1]+j-i]=item;
 }
 template <class T>
	 T TriMat<T>::GetEle(int i,int j)const;
 {
	 if((i<1||i>n)||(j<1||j>n))
	 {
		 cout<<"数组下标越界"<<endl;
		 exit(0);
	 }

	 if(j>=i)return arr[rowTabl[i-1]+j-i];
	 else return 0;
 }

 template <class T>
	 TriMat<T> TriMat<T>::operator+(const TriMat<T> &a)const
 {
	 T itemCurr,itemA;
	 TriMat<T>b(a,n);

	 for (int i=1;i<=n;i++)
	 {
		 for (int j=1;i<=n;j++)
		 {
			 itemCurr=GetEle(i,j);
			 itemA=a.GetEle(i,j);
			 b.PutEle(ietmCurr=itemA,i,j);
		 }
	 }

	 template <class T>
     TriMat<T>::operator-(const TriMat<T> &a)const
		 {
			 T itemCurr,itemA;
			 TriMat<T>b(a,n);

			 for (int i=1;i<=n;i++)
			 {
				 for (int j=i;j<=n;j++)
				 {
				 itemCurr=GetEle(i,j);
				 itemA=a.GetEle(i,j);
				 b.PutEle(itemCurr-itemA,i,j);
				 }
			 }
			 return b;
	 }

	 template <class T>
	 TriMat<T>::operator*(const TriMat<T> &a)const
	 {
		 T itemCurr,itemA,itemB;
		 TriMat<T>b(a,n);

		 for (int i=1;i<=n;i++)
		 {
			 for (int j=i;j<=n;j++)
			 {
				 itemB=0;
	

				 for (int k=i;k<=j;k++)
				 {
					 itemCurr=GetEle(i,k);
					 itemA=a.GetEle(k,j);
					 itemB+=itemCurr*itemA;
				 }

				 b.PutEle(itemB,i,j);
			 }
		 }

		 template <class T>
			 void  TriMat<T>::ReadMat(void)
		 {
			 T item;
			 for (int i=1;i<=n;i++)
			 {
				 for (int j=1;j<=n;j++)
				 {
					 cin>>item;
					 PutEle(item,i,j);
				 }
			 }
		 }

		 template <class T>
			 void TriMat<T>::WriteMat(void)const
		 {
			 for (int i=1;i<=n;i++)
			 {
				 for (int j=1;j<=n;j++)
					 cout<<setw(7)<<GetEle(i,j);
				 cout<<endl;
			 }
		 }

⌨️ 快捷键说明

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