怎么都是只下载不说话呢?大家可以随便谈谈自己的想法噻
下面这是源代码:
#include “stdafx.h”
#include “iostream.h”
#include “malloc.h”
int Row=0,Col=0;//矩阵总行数,总列数
double * InitMatrix()
{
double * matrix;
cout<
cin>>Row>>Col;
matrix = (double*)malloc(Row*Col*sizeof(double));
double * Elem;
Elem = matrix;
cout<
for(int i=0;i
{
for(int j=0;j
{
cout<
cin>>*Elem;
Elem++;
}
}
return matrix;
}
double GetElem(double * mat,int m,int n)
{
double *Elem = mat;
int i=0;
while(i
{
Elem++;
i++;
}
return *Elem;
}
void SetElem(double * mat,int m,int n,double v)
{
double *Elem = mat;
int i=0;
while(i
{
Elem++;
i++;
}
*Elem = v;
}
bool GaussJordan(double * mat)
{
if(1 != (Col-Row))
return false;
int i = 0,j = 0,k = 0;//行标,列标,第几轮计算
double L_ik = 1;
double L_kk = 1;//Elem(k,k)的倒数
double matElem = 0;
for(k = 0;k < Row;k++)
{
if(0 == GetElem(mat,k,k))
return false;
L_kk = 1/GetElem(mat,k,k);
for(i = 0;i < Row;i++)
{
if(i == k)
continue;
L_ik = GetElem(mat,i,k)*L_kk;
for(j = k+1;j < Col;j++)
{
matElem = GetElem(mat,i,j) – L_ik * GetElem(mat,k,j);
SetElem(mat,i,j,matElem);
}
}
//计算主行
for(j = k;j < Col;j++)
{
matElem = L_kk * GetElem(mat,k,j);
SetElem(mat,k,j,matElem);
}
}
//构造结果解矩阵
cout<
for(i = 0;i < Row;i++)
{
cout<
}
return true;
}
int main(int argc, char* argv[])
{
double * mat = InitMatrix();
if(!GaussJordan(mat))
{
cout<
}
cout<
return 0;
}