c++ 將行列式化為上三角行列式,並求值。
阿新 • • 發佈:2018-11-19
c++ 將行列式化為上三角行列式,並求值。
#include<stdio.h>
#include<iostream>
using namespace std;
void op(double *a,int row,int col,int temp)
{ double NUM1,NUM2;
NUM1=a[temp*col+temp];
for(int i=temp+1;i<row;i++)
{
NUM2=a[i*col+temp];
for(int j=temp;j<col;j++)
{
a[i*col+ j]=a[i*col+j]+NUM2*a[temp*col+j]*(-1)/NUM1;
}
}
}
int main(){
int row, col;
double value=1;
cout<<"請輸入行數";
cin>>row;
cout<<"請輸入列數";
cin>>col;
double *a=(double*)malloc(row*col*sizeof(double));
cout<<"請輸入所有元素"<<endl;
for(int i=0;i<col*row;i++)
{
cin>>a[i];
}
cout<<"———輸入成功———"<<endl;
int k=row;
if(k>col) k=col;
for(int i=0;i<k-1;i++)
{
op(a,row,col,i);
cout<<"———計算過程———"<<endl;
for(int i=0;i<col*row;i++)
{
cout<<a[i]<<" ";
if((i+1)%col==0)
cout<<endl;
}
}
cout<<"———結果如下———"<<endl;
for(int i=0;i<col*row;i++)
{
cout<<a[i]<<" ";
if((i+1)%col==0)
cout<<endl;
}
for(int i=0;i<k;i++)
value*=a[i*col+i];
cout<<"行列式的值為"<<value<<endl;
system("pause");
return 0;
}
執行效果如下: