【技术】用c++编的求线性代数里多阶行列式的方法
窦志臻吧
全部回复
仅看楼主
level 13
1l不给看
     ------欢迎光临本人的个人贴吧:https://tieba.baidu.com/f?kw=%F1%BC%D6%BE%D5%E9&fr=itb_favo&fp=favo#   请点右上角的我喜欢~
2013年03月09日 04点03分 1
level 13
这是用C++编的 只学过c的童鞋可能看不懂
2013年03月09日 04点03分 2
level 13
#include<stdio.h>
#include<iostream.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#define N 10
class Hanglie
{
public:
Hanglie();
friend void Hanglieprint(Hanglie (*h)[N]);
friend int detcal(Hanglie (*h)[N]);
Hanglie operator =(const Hanglie &h);
Hanglie operator =(const int &h);
friend Hanglie operator *(const Hanglie &h,const int &h_);
friend Hanglie operator *(const int &h,const Hanglie &h_);
friend Hanglie operator *(const Hanglie &h,const Hanglie &h_);
operator int(); int numberin();
protected:
private:
int number;
int in;
};
2013年03月09日 04点03分 3
level 13
Hanglie::Hanglie()
{
number=0;
in=0;
}
Hanglie Hanglie::operator =(const Hanglie &h)
{
number=h.number;
in=1;
}
Hanglie Hanglie::operator =(const int &h)
{
number=h;
in=1;
}
Hanglie::operator int()
{
int tem;
tem=number;
}
int Hanglie::numberin()
{
return in;
}
Hanglie operator *(const Hanglie &h,const int &h_)
{
Hanglie tem;
tem.number=h.number*h_;
tem.in=1;
return tem;
}
Hanglie operator *(const int &h,const Hanglie &h_)
{
Hanglie tem;
tem.number=h_.number*h;
tem.in=1;
return tem;
}
Hanglie operator *(const Hanglie &h,const Hanglie &h_)
{
Hanglie tem;
tem.number=h.number*h_.number;
tem.in=1;
return tem;
}
2013年03月09日 04点03分 4
level 13

void Hanglieprint(Hanglie (*h)[N])
{
int i,j;
for(i=0;i<N;i++)
{
if(!(h[i][0].numberin()))
{
putchar('\n');
continue;
}
for(j=0;j<N;j++)
{
if(!(h[i][j].numberin()))
{
continue;
}
printf("%d\t",h[i][j].number);
}
putchar('\n');
}
}
2013年03月09日 04点03分 5
level 13

int detcal(Hanglie (*h)[N])
{
int
i,j,k,total;
i=j=k=total=0;
if(!h[0][0].numberin())
{
printf("\n当前没有行列式\n");
return
0;
}
if(!h[0][1].numberin())
{
return
h[0][0].number;
}
else
{
for(i=0;i<N;i++)
{
if(!h[0][i].numberin())
{
break;
}
Hanglie
htem[N][N];
for(j=0;j<N-1;j++)
{
for(k=0;k<N-1;k++)
{
if(k<i)
{
if(h[j+1][k].numberin())
htem[j][k]=h[j+1][k];
}
else
{
if(h[j+1][k+1].numberin())
htem[j][k]=h[j+1][k+1];
}
}
}
total+=int(pow(-1,(1+1+i)))*h[0][i]*detcal(htem);
}
}
return
total;
}
2013年03月09日 04点03分 6
level 13
int main()
{
int i,j;
Hanglie
h[N][N];
printf("行列式为:\n");
Hanglieprint(h);
printf("行列式的结果为:%d",detcal(h));
printf("\n\n");
getchar();
return 0;
}
2013年03月09日 04点03分 7
level 13
@炎神_降世 元芳,你怎么看?
2013年03月09日 04点03分 8
看不下去…
2013年03月09日 07点03分
[睡觉]就知道你看不下去
2013年03月09日 08点03分
level 13
说好的排版呢[怒]
     ------欢迎光临本人的个人贴吧:https://tieba.baidu.com/f?kw=%F1%BC%D6%BE%D5%E9&fr=itb_favo&fp=favo#   请点右上角的我喜欢~
2013年03月09日 04点03分 9
level 13
本代码中没有赋值的部分 给行列式赋值的代码请自行添加
本程序可求十阶及以内的行列式(将开头宏定义处10改为10以上可以求更高阶的行列式)
     ------欢迎光临本人的个人贴吧:https://tieba.baidu.com/f?kw=%F1%BC%D6%BE%D5%E9&fr=itb_favo&fp=favo#   请点右上角的我喜欢~
2013年03月09日 05点03分 10
level 10
淫窦…真不嫌累啊
2013年03月09日 07点03分 11
level 10
淫窦…真不嫌累啊
2013年03月09日 07点03分 12
level 10
淫窦…真不嫌累啊
2013年03月09日 07点03分 13
你一条信息发三遍 你嫌累不...... 我贴吧也不能都是水啊 得整点有用的啊
2013年03月09日 08点03分
level 2
强悍啊窦汁,不过那个stdlib头文件是在哪里用到的啊
2013年03月14日 11点03分 14
level 2
强悍啊,窦汁,不过stdlib那个是在哪里用到的啊
2013年03月14日 11点03分 15
用不到 打多了 骚年可否留下姓名?
2013年03月14日 13点03分
回复 dou059593 :闫玉坤[Yeah]
2013年03月14日 14点03分
回复 上岛咖啡浓 :话说我头一次在贴吧里留言,以前都没玩过
2013年03月14日 14点03分
感谢支持[抖胸]
2013年03月14日 14点03分
1