當前位置:編程學習大全網 - 編程語言 - 如何用c解壹元壹次方程

如何用c解壹元壹次方程

C算法:

#include "stdio.h"

main(){

float a[3][4]={{3 , -0.1 ,-0.2, 0.85 },

{0.1,7, -0.3, -19.3},

{0.3 ,-0.2 ,10, 71.4}};

int i=0;j=0;k=0;

while(i<4)

{

a[0][i]=a[0][i]/a[0][0];

a[1][i]=a[0][i]+a[1][i];

a[2][i]=a[2][i]+a[0][i];

i++;

}

while(j<4)

{

a[1][j]=a[1][j]/a[1][1];

a[0][j]=a[1][j]*a[0][1]+a[0][j];

a[2][j]=a[1][j]*a[2][1]+a[2][j];

j++;

}

while(k<4)

{

a[2][k]=a[2][k]/a[2][2];

a[0][k]=a[2][k]*a[0][2]+a[0][k];

a[1][k]=a[2][k]*a[1][2]+a[1][k];

}

printf("%f",a[t][0]);

printf("%f",a[t][1]);

printf("%f",a[t][2]);

}

C++算法:

#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';

}

}

供參考!

  • 上一篇:編程貓學校
  • 下一篇:KV700編程電纜的制造
  • copyright 2024編程學習大全網