📄 123.cpp
字号:
#include<iostream>
#include<cstdlib>
#include<cmath>
using namespace std;
void abc(double *[],double[],int);
void main()
{
int n,i,j,k,t;
cout<<"输入方程的元数:";
cin>>n;
double **a=new double *[n],max;
double *b=new double[n];
double *temp=new double[n+1];
if(a==0||b==0||temp==0)
{
cout<<"动态内存申请失败程序终止执行\n";
exit(1);
}
for(i=0;i<n;i++)
{
a[i]=new double[n];
if(a[i]==0)
{
cout<<"动态内存申请失败程序终止执行\n";
exit(1);
}
}
for(i=0;i<n;i++)
{
cout<<"输入第"<<i+1<<"个方程的系数:";
for(j=0;j<n;j++)
cin>>a[i][j];
}
cout<<"输入等号右边的"<<n<<"个数:";
for(i=0;i<n;i++)
cin>>b[i];
for(k=n-1;k>0;k--)
{
max=fabs(a[0][k]);
for(int m=0;m<=k;m++)
{
if(fabs(a[m][k])>max)
{
max=fabs(a[m][k]);
t=m;
}
}
if(max==0)
{
cout<<"方程无解或有无数解\n";
exit(0);
}
for(m=0;m<=k;m++)
{
temp[m]=a[t][m];
a[t][m]=a[k][m];
a[k][m]=temp[m];
}
temp[n]=b[t];
b[t]=b[k];
b[k]=temp[n];
for(i=0;i<k;i++)
{
for(j=0;j<k;j++)
a[i][j]-=a[k][j]*a[i][k]/a[k][k];
b[i]-=b[k]*a[i][k]/a[k][k];
a[i][k]=0;
}
}
if(a[0][0]==0)
{
cout<<"方程无解或有无数解\n";
exit(0);
}
cout<<"方程的"<<n<<"个根为:";
abc(a,b,n-1);
cout<<endl;
for(i=0;i<n;i++)
delete[] a[i];
delete[] a; delete[] b; delete[] temp;
}
void abc(double*a[],double b[],int i)
{
if(i==0)
cout<<(b[i]/=a[i][i])<<'\t';
else
{
abc(a,b,i-1);
for(int j=0;j<i;j++)
b[i]-=b[j]*a[i][j];
cout<<(b[i]/=a[i][i])<<'\t';
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -