Код: Выделить всё
#include<iostream>
#include<math.h>
using namespace std;
void main ()
{
int n,i,j,k,m,p;
double **a,*b,*x,s,c,*pr,r;
std::cout<<"Vvedite_razmer_matricy=";
cin>>n;
a=new double *[n+1];
for (i=0;i<=n;i++)
a[i]=new double[n+1];
b=new double[n+1];
x=new double[n+1];
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
cin>>a[i][j];
for(i=1;i<=n;i++)
cin>>b[i];
for (k=1;k<=n-1;k++){
p=k;
for (m=k+1;m<=n;m++)
if (fabs(a[p][k])<fabs(a[m][k]))
p=m;
double *pr;
pr=a[k];
a[k]=a[p];
a[p]=pr;
r=b[k];
b[k]=b[p];
b[p]=r;
for(m=k+1;m<=n;m++){
c=a[m][k]/a[k][k];
b[m]=b[m]-(c*b[k]);
for(i=k;i<=n;i++)
a[m][i]-=c*a[k][i];
}
}
x[n]=b[n]/a[n][n];
for(k=n-1;k>=1;k--){
s=0;
for(i=k+1;i<=n;i++)
s+=a[k][i]*x[i];
x[k]=(b[k]-s)/a[k][k];
}
cout<<"----x-----"<<endl;
for(i=1;i<=n;i++)
cout<<x[i]<<endl;
for(i=0;i<=n;i++)
delete []a[i];
delete[]a;
delete[]b;
delete[]x;
}
