📄 work3.cpp
字号:
// work3.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "iostream.h"
#include "stdio.h"
#include "math.h"
#define MAX_N 20
int main(int argc, char* argv[])
{
int n;
int i,j,k;
int line;
double max,temp;
static double a[MAX_N][MAX_N],b[MAX_N],x[MAX_N];
cout<<"输入方程组Ax=b的维数n :"<<endl;
cin>>n;
while ((n>MAX_N)||(n<0))
{
cout<<"输入点个数必须在范围 1 到"<<MAX_N<<endl;
cout<<"重新输入n:";
cin>>n;
}
//按行输入系数及解,初始化数组a[i][j],b[i]
cout<<"按行输入方程组的系数a(i,j),i=0.."<<n-1<<endl;
for (i=0;i<n;i++)
{ for (j=0;j<n;j++)
{
cin>>a[i][j];
}
}
cout<<"输入方程组右边的值b(i),i=0.."<<n-1<<endl;
for (i=0;i<n;i++)
{
cin>>b[i];
}
//找出各列最大值
for (i=0;i<n-1;i++)
{
for (j=i+1,line=i,max=fabs(a[i][i]);j<n;j++)
{
if (fabs(a[j][i])>max)
{
line=j;
max=fabs(a[j][i]);
}
}
//将最大值所在行与当前行交换
if (i<line)
{
temp=b[i];
b[i]=b[line];
b[line]=temp;
for (j=i;j<n;j++)
{
temp=a[i][j];
a[i][j]=a[line][j];
a[line][j]=temp;
}
}
//化简使之成为上三角
for (j=i+1;j<n;j++)
{
temp=-a[j][i]/a[i][i];
b[j]+=b[i]*temp;
for (k=i;k<n;k++)
{
a[j][k]+=a[i][k]*temp;
}
}
}
//求解方程组的解
x[n-1]=b[n-1]/a[n-1][n-1];
for (i=n-2;i>=0;i--)
{
x[i]=b[i];
for(j=i+1;j<n;j++)
{
x[i]-=a[i][j]*x[j];
}
x[i]/=a[i][i];
}
cout<<"解为:"<<endl;
for (i=0;i<n;i++)
{
cout<<"x["<<i<<"]="<<x[i]<<endl;
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -