行列式的计算问题
//用来计算二、三阶的函数好像没有调用成功,总之不起作用
程序代码:
/**************************************************************
/*
/* 用于计算线性代数 n阶矩阵
/* 2013-10-12
***************************************************************/
/*
/* 一些声明
/*/
void display_front(); // 用户指南
void *input(double *inp,int flag); // 获取数据
double execute(int flag); // 主执行函数
void display_sterm(double *out,double result,
int flag); // 输出结果
#include <stdio.h>
#define N 100
#define M 100
double a[N][M]; // 原始矩阵
void
main()
{
double *inp=a[0]; // 用于处理数据
double result; // 储存计算结果
int flag; // 阶数
char ch='a'; // 控制循环的小小元素
display_front(); // 用户指南
do
{
printf("请输入阶数:\n");
scanf("%d",&flag); // 获取阶数
input(inp,flag); // 获得行列式数据
result=execute(flag); // 计算并返回结果
display_sterm(inp,result,flag); // 输出结果
}while((ch=getch())!='N');
}
void display_front()
{
printf("可以计算n阶行列式\n");
}
void *input(double *inp,int flag)
{
int i,j;
int f=0;
printf("请键入数据:\n");
for(i=0;i<flag;i++)
for(j=0;j<flag;j++)
{
if(f==flag)
{
printf("\n");
f=0;
}
scanf("%lf",inp++);
f++;
}
}
/*********************************************************************************/
/*/
/* 本函数的一些子函数的声明
/*/
double one(void);
double two(void);
double three(void);
//double four(void);
//double five(void);
double execute(int flag)
{
double result=0;
switch(flag)
{
case 1 : result=one();break;
case 2 : result=two();break;
case 3 : result=three();break;
default : printf("您的要求太高,我无法做到!\n");
}
return result;
}
double one(void) // 一阶算法
{
return a[0][0];
}
double two(void) // 二阶算法
{
return a[0][0]*a[1][1] - a[0][1]*a[1][0];
}
double three(void) // 三阶算法
{
return
a[0][0]*a[1][1]*a[2][2] + a[0][1]*a[1][2]*a[2][0] + a[0][2]*a[1][0]*
a[2][1] - a[0][2]*a[1][1]*a[2][0] - a[0][1]*a[1][0]*a[2][2] - a[0][0]
*a[2][1]*a[2][2];
}
/*********************************************************************************/
void display_sterm(double *out,double result,int flag)
{
int i,j;
int f=0;
printf("需要计算的行列式为:\n");
for(i=0;i<flag;i++)
for(j=0;j<flag;j++)
{
printf(" %.0lf",*out++);
f++;
if(f==flag)
{
printf("\n");
f=0;
}
}
printf("\n计算结果为:%.2lf\n\n",result);
}








