📄 test.cpp
字号:
#include <iostream.h>
#include <math.h>
class hhs
{
private:
int n;
double *a;
public:
void weishu(int a)
{
n = a;
}
double action(double *a,int n)
{
int i,j,k,flag;
double tem;
double ass;
ass=1.0;
if(*a==0)
{
for(i=1,flag=0;i<n;i++)
if(*(a+i*n)!=0)
{
for(j=0;j<n;j++)
{
tem = *(a+j);
*(a+j) = *(a+i*n+j);
*(a+i*n+j) = tem;
}
ass = -ass;
flag = 1;
break;
}
}
if (flag==0)
return (0);
ass *= *a;
while(n>1)
{
for(j=1;j<n;j++)
for(i=1;i<n;i++)
*((a+i*n)+j) = *((a+i*n)+j)-(*(a+j))*(*(a+i*n))/(*a);
k=0;
for(i=0;i<n*n;i++)
if(i>n&&i%n!=0)
*(a+k++) = *(a+i);
n--;
if(*a==0)
{
for(i=1,flag=0;i<n;i++)
if(*(a+i*n)!=0)
{
for(j=0;j<n;j++)
{
tem = *(a+j);
*(a+j) = *(a+i*n+j);
*(a+i*n+j) = tem;
}
ass = -ass;
flag = 1;
break;
}
}
if(flag==0)
return (0);
ass *= *a;
}
return ass;
}
};
void main()
{
hhs eg;
int i,n;
double *p;
cout<<"输入行列式的阶数: n = ";
cin>>n;
double *b =new double [n*n];
p = b;
cout<<endl;
cout<<"输入"<<n*n<<"个数值:"<<endl;
for(i=0;i<n*n;i++)
{
cout<<"b["<<i/n<<","<<i%n<<"] = ";
cin>>*(b+i);
}
eg.weishu(n);
cout<<endl;
cout<<"complet = "<<eg.action(p,n)<<endl<<endl;
delete b;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -