?? 列主消元.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<<"請輸入數(shù)組的維數(shù):";
cin>>n;
float *a,p;
a=new float[n*(n+1)];
cout<<"輸入數(shù)組a:("<<n<<"*"<<n<<")"<<endl;
for(i=0;i<n;++i)
for(j=0;j<n;++j)
cin>>a(i,j);
cout<<"輸入數(shù)組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;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -