| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3571 人关注过本帖
标题:[开源]C++版联合程序制作一 算法演示
只看楼主 加入收藏
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
我MSN老是在,大家都不在,郁闷,想问下,CDynViewSplitter这个类,可以用MFC程序自动生成吗?还是自己写的啊?为什么有3个view类啊?不是只看到代码和图形两个view吗?那个demo view是做什么的啊?是在code和hannuota之下吗?

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-07-01 18:42
luoxian_2003
Rank: 1
等 级:新手上路
威 望:2
帖 子:163
专家分:0
注 册:2006-2-22
收藏
得分:0 

我要仔细研究一下源代码,再发表意见


天地有正气,凛烈万古存。
2006-07-02 11:22
myajax95
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:30
帖 子:2978
专家分:0
注 册:2006-3-5
收藏
得分:0 
以下是引用wfpb在2006-7-1 18:42:45的发言:
我MSN老是在,大家都不在,郁闷,想问下,CDynViewSplitter这个类,可以用MFC程序自动生成吗?还是自己写的啊?为什么有3个view类啊?不是只看到代码和图形两个view吗?那个demo view是做什么的啊?是在code和hannuota之下吗?

CDynViewSplitter这个类是自己写的,他的功能是把Window切成2半(MFC本身的class也能),同时可以随时更换其中任何一个(不知MFC本身是不是能作这个)。只有两个View是active的,即上面的Hanoi tower view和下面的code view。如果你在加新的算法只需写上面的一个view,然后把算法程序存成text文件,下面的code view自然会显示它。剩下的一个demo view还没有用,我想把他留下来作成页首,显示所有可演示的算法的类表。


http://myajax95./
2006-07-03 06:23
myajax95
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:30
帖 子:2978
专家分:0
注 册:2006-3-5
收藏
得分:0 
以下是引用wfpb在2006-7-1 18:32:49的发言:
myajax95:你把两个command的操作搞反了,前面应该是自动,后面才应该是单步啊,还有,应该在自动播放的时候),就不应该再接受点个自动播放的命令了。不然就不叫自动播放了。
一点意见

图标是选的不好,其它功能没什么错,应该再完善一下,一些时候灰掉一些按钮,没什么计数含量,所以没作干净。回头加上它。


http://myajax95./
2006-07-03 06:27
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 

我知道这个类的功能,就是不知道怎么写,以为可以自动生成,呵呵


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-07-03 08:09
woodhead
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:1124
专家分:0
注 册:2005-7-18
收藏
得分:0 
算法2,按规律从上面挪,最小的一个不用判断是不是有比它还小的。
感觉递归象列方程。
直接操作栈象四则运算,一锅粥。

[CODE]#include <iostream>
#include "tower.h"
using namespace std;

void output(tower&, tower&, tower&);
void hnt(tower&, tower&, tower&, int);

int main()
{
int n;
while(cin>>n)
{
tower source('a',n), tmp('b'), dest('c');
output(source, tmp, dest);
hnt(source,tmp,dest,n);
}
system("pause");
return 0;
}

void hnt(tower &source, tower &tmp, tower &dest, int high)
{
// destination select , p[0] source
tower *p[3] = { &source,
(high%2 == 0 ? &tmp : &dest),
(high%2 == 0 ? &dest : &tmp) };

int i=0, prev=2, next=1; // index

while(1)
{
p[i]->move_top_to( *p[next] ); //move 1 from current to next tower
output(source, tmp, dest);

if(dest.size() == high)
break; // finish

i = (i+1)%3; // index + 1
prev = (prev+1)%3;
next = (next+1)%3;

if( p[prev]->size() == 0 )
p[next]->move_top_to( *p[prev] );
else if( p[next]->size() == 0 )
p[prev]->move_top_to( *p[next] );
else if( p[prev]->top() > p[next]->top() )
p[next]->move_top_to( *p[prev] );
else // if( p[a]->top() < p[b]->top )
p[prev]->move_top_to( *p[next] );

output(source, tmp, dest);
}
}

void output(tower &t1, tower &t2, tower &t3)
{
for(int i=0; i<t1.size(); i++)
cout<<t1[i]<<' ';
cout<<'\n';
for(int i=0; i<t2.size(); i++)
cout<<t2[i]<<' ';
cout<<'\n';
for(int i=0; i<t3.size(); i++)
cout<<t3[i]<<' ';
cout<<"\n--------------------"<<endl;
}
[/CODE]

2006-07-03 09:57
myajax95
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:30
帖 子:2978
专家分:0
注 册:2006-3-5
收藏
得分:0 
楼上的方法不错。

http://myajax95./
2006-07-03 13:33
myajax95
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:30
帖 子:2978
专家分:0
注 册:2006-3-5
收藏
得分:0 
准备继续增加算法演示的功能。这回准备增加一个排序的算法演示,可以比较bubble sort(冒泡)和qsort等N种排序。图形单部演示。在主菜单上用户可以选演示什么算法。这当中包含了最近在C++/VC++区讨论过的N个问题:qsort,partition,递归,SDI分割两个区域来回切换界面,CListCtrl等等。大家谁有兴趣一起作,业可以复习一下这些东东。同时可以让自己的程序风格更标准一点。

http://myajax95./
2006-09-02 15:38
cosmos
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-9-1
收藏
得分:0 
还是不会vc

2006-09-02 15:41
myajax95
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:30
帖 子:2978
专家分:0
注 册:2006-3-5
收藏
得分:0 
以下是引用cosmos在2006-9-2 15:41:20的发言:
还是不会vc

人家wfpb已经学的七七八八了


http://myajax95./
2006-09-02 15:43
快速回复:[开源]C++版联合程序制作一 算法演示
数据加载中...
 
   



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

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