#include "iostream.h"
void main()
{
cout<<"请输入未知数的个数:"<<endl;
int n;
cin>>n;
cout<<"请输入方程的个数:"<<endl;
int m;
cin>>m;
float** a=new float*[m+1];
int i=0,j=0;
for(i = 1; i<m+1; i++)
a[i]=new float[n+2];
cout<<"请依次输入"<<endl<<endl;
for(i=1;i<m+1;i++)
{
cout<<"第"<<i<<"个方程的系数"<<endl;
for(j=1;j<n+2;j++)
cin>>a[i][j];
}
/**********
for(i=1;i<m+1;i++)
{
cout<<"第"<<i<<"个方程的系数"<<endl;
for(j=1;j<n+2;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
//**********/
float temp;
int k,l;
int h;
for(k=1;k<m+1;k++)
{
for(i=k;i<m+1;i++)
{
if(a[i][i]==0)
{//为零时换行
for(h=i;h<m+1;h++)
{
if(a[h][i]!=0)
return;
}
for(l=i;l<n+2;l++)
{
temp=a[i][l];
a[i][l]=a[h][l];
a[h][l]=temp;
}
}
temp=a[i][i];
for(j=i;j<n+2;j++)
{
a[i][j]=a[i][j]/temp;
}
for(l=i+1;l<m+1;l++)
{
temp=a[l][i];
for(j=i;j<n+2;j++)
{
a[l][j]=a[l][j]-a[i][j]*temp;
}
}
}
}
/**********
for(i=1;i<m+1;i++)
{
cout<<"第"<<i<<"个方程的系数"<<endl;
for(j=1;j<n+2;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
//**********/
for(i=m;i>0;i--)
{
for(j=1;j<i;j++)
{
temp=a[j][i];
for(k=i;k<n+2;k++)
{
a[j][k]=a[j][k]-a[i][k]*temp;
}
}
}
/**********
for(i=1;i<m+1;i++)
{
cout<<"第"<<i<<"个方程的系数"<<endl;
for(j=1;j<n+2;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
**********/
cout<<"解方程组结果为"<<endl<<endl;
for(i=1;i<m+1;i++)
{
cout<<"第"<<i<<"个未知数是 "<<a[i][n+1]<<endl;
}
}