?? mww.cpp
字號:
#include "math.h"
#define eps 1e-7
#define Max 20
#include "stdio.h"
int sortgauss(double a[Max][Max],double *p,int n)
{
int k,r,i,j,m;
double t,s,u;
//選主元
for(k=0;k<n-1;k++)
{
t=a[k][k];
r=k;
for(i=k+1;i<n;i++)
if(t<a[i][k])
{
r=i;t=fabs(a[i][k]);
}
if(t<eps)
return(0);
//換行
if(r!=k)
{
*p=-*p;
for(j=k;j<n+1;j++)
{
u=a[r][j];
a[r][j]=a[k][j];
a[k][j]=u;
}
}
//消元
for(i=k+1;i<n;i++)
{
a[i][k]=a[i][k]/a[k][k];
for(j=k+1;j<n+1;j++)
a[i][j]=a[i][j]-a[i][k]*a[k][j];
}
*p=*p*a[k][k];
}
*p=*p*a[k][k];
//回帶
a[n-1][n]=a[n-1][n]/a[n-1][n-1];
for(m=n-2;m>=0;m--)
{
s=0;
for(j=m+1;j<=n-1;j++)
{
s=s+a[m][j]*a[j][n];
}
a[m][n]=(a[m][n]-s)/a[m][m];
}
}
main()
{
int i,j,n;
double p=1,a[Max][Max]={0.00};
char path [80],ch;
//通過文件讀入系數矩陣
printf("請輸入系數矩陣文件路徑:");
scanf("%s",path);
FILE *fp;
fp=fopen(path,"r");
if(fp==NULL)
return(0);
else
{
rewind(fp);
fscanf(fp,"%d",&n);
// ch=fgetc(fp);
for(i=0;i<n;i++)
{
for(j=0;j<n+1;j++)
{
fscanf(fp,"%lf ",&a[i][j]);
// ch=fgetc(fp);
}
}
}
if( sortgauss( a,&p,n)==0)
{
printf("fails!!\n");
return(1);
}
for(i=0;i<n;i++)
{ printf("x[%d]=%f\t",i,a[i][n]);
if((i+1)%4==0)
printf("\n");
}
printf("\n det=%f\n",p);
fclose(fp);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -