当前位置:编程学习 > C/C++ >>

编写C++程序函数,求行列式的值

template<class T>

T det(T *a, int n)

{

}

其中a是存储元素的一维数组,n是行列式的阶数。

例如,二阶行列:

1 3

4 5

则在数组a中的存储形式为:1 3 4 5 ,n=2

 

再如,三阶行列式:

1 4 7

3 2 5

9 1 8

则在数组a中的存储形式为:1 4 7 3 2 5 9 1 8,n=3

依次类推,要求写出函数体,求行列式的值

答案:#include<iostream>
using namespace std;

template<class T>
T det(T *a, int n)
{
 int i, j, m, c;
 T  s, *b;
 if(n==1)return a[0];
 b= new T[(n-1)*(n-1)];
 s=0;
 for( m=1; m<=n; m++)
 {
  c=0;
  for(i=0; i<n; i++)
   for(j=0; j<n; j++)
   {
    if(  !(i==0 || (j+1)==m)  )
     b[c++]=a[ i*n+j ];
   }
   if( (m+1)%2 )
    s += -1*a[m-1]*det(b,n-1);
   else
    s += a[m-1]*det(b,n-1);
 }
 delete[]b;
 return s;
}

int main()
{
 double *a;
 int n, i, j;
 cout<<"你想求多少阶的行列式的值?n= ";
 cin>>n;
 a=new double[n*n];
 cout<<"请输入该行列式:"<<endl;
 for(i=0; i<n; i++)
  for(j=0; j<n; j++)
   cin>>a[i*n+j];
 cout<<"该行列式的值为: ";
 cout<<det(a,n)<<endl;
 delete[]a;
 return 0;
}

上一个:诚请C++高手帮忙,非常感谢
下一个:在C++中,对象的赋值的区别

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,