📄 列主消元.cpp
字号:
#include<iostream.h>
#include<stdlib.h>
#define a(i,j) a[i*(n+1)+j]
float f(float p)
{
if(p<0) return -p;
else return p;
}
void SS(float a[],int n)
{ int q,j;
for(q=0;q<n;++q)
{
cout<<endl;
for(j=0;j<n+1;++j)
cout<<a(q,j)<<" ";
}
cout<<endl;
}
void main()
{
int i,j,n,q;
cout<<"请输入数组的维数:";
cin>>n;
float *a,p;
a=new float[n*(n+1)];
cout<<"输入数组a:("<<n<<"*"<<n<<")"<<endl;
for(i=0;i<n;++i)
for(j=0;j<n;++j)
cin>>a(i,j);
cout<<"输入数组b:"<<endl;
for(j=0;j<n;++j)
cin>>a(j,n);
SS(a,n);
for(i=0;i<n-1;++i)
{
p=a(i,i);q=i;
for(j=i+1;j<n;++j)
if(f(p)<f(a(j,i))) {p=a(j,i);q=j;}
if(p==0) { cout<<"det(A)=0";exit(1);}
if(q!=i)
for(j=0;j<n+1;++j)
{
p=a(q,j);
a(q,j)=a(i,j);
a(i,j)=p;
}
for(q=i+1;q<n;++q)
for(j=n;j>=i;--j)
a(q,j)-=a(i,j)*a(q,i)/a(i,i);
SS(a,n);
}
i=n-1;j=n;
a(i,j)/=a(i,i);
for(i=n-2;i>=0;i--)
{
p=0;
for(j=i+1;j<n;++j)
p+=a(i,j)*a(j,n);
a(i,n)=(a(i,n)-p)/a(i,i);
}
cout<<endl;
for(i=0;i<n;++i)
cout<<"x"<<i+1<<"="<<a(i,n)<<endl;
delete a;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -