| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 798 人关注过本帖
标题:行列式的计算问题
取消只看楼主 加入收藏
浮云之冰雪
Rank: 2
等 级:论坛游民
帖 子:74
专家分:89
注 册:2013-5-11
结帖率:90.91%
收藏
已结贴  问题点数:20 回复次数:2 
行列式的计算问题
//用来计算二、三阶的函数好像没有调用成功,总之不起作用
程序代码:
/**************************************************************
/*
/*                用于计算线性代数  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);
}
搜索更多相关主题的帖子: color 行列式 
2013-10-14 13:38
浮云之冰雪
Rank: 2
等 级:论坛游民
帖 子:74
专家分:89
注 册:2013-5-11
收藏
得分:0 
我仍然找不出错误,请明示!

潇洒不可少!
2013-10-15 14:47
浮云之冰雪
Rank: 2
等 级:论坛游民
帖 子:74
专家分:89
注 册:2013-5-11
收藏
得分:0 
依然如此!

潇洒不可少!
2013-10-16 22:24
快速回复:行列式的计算问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.043336 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved