根据程序代码画流程图和根据流程图自动写代码的程序 怎么做

请教各位大神。
目前需要做一程序,需完成 根据程序代码自动画流程图 和 根据 流程图 自动写代码的功能。都是很简单的代码和图。。
由于本人以前没有接触过这样的东西。。。完全没有思路。。
虽然我知道有 flowchart.net这样的控件可以完成这样的任务。但是它收费

同时通过搜索得知
1. Auto Flowchart.根据源码生成流程图;
2. Auto Code.画流程图,并可生成相应程序
3. FlowchartImg.绘制流程图的控件,可以根据程序生成流程图
4. FlowchartExpert. Delphi专家,根据当前程序生成流程图

我想做的程序的功能 就是完成Auto Flowchart和Auto Code的功能,但是我现在无从下手。

如何不用他们的控件 自己做一个出来?

如果没办法 需要用他们的控件。。麻烦提供几个免费的空间。。

如果有这方面的源码,麻烦给一份瞧瞧。E-mail:[email protected]

没分了 抱歉。。。悬赏不了了。。

char a,b,c;
{if (n==1) printf("%c-->%c\n",a,c);
else {hanoi (n-1,a,c,b);
printf ("%c-->%c\n",a,c);
hanoi (n-1,b,a,c);}
}
我给你详细解释下这个程序中的代码吧。我也是刚学,希望对你有用。可能有些不好之处,还希望谅解。

先说下这个问题的整体思想:
1,如果只有1个盘,那么就直接把这个盘从A移动到C上。

2,如果存在两个盘,那么先把第一个盘移动到B上,在把最下面一个盘移动到C上,在把B上的盘移动到C上。

3,这样,我们可以得出一个结论,如果存在N个盘,可以先把上面N-1个盘通过C 移动到B上,然后把第N个盘移动到C上, 再把B上的N个盘通过A移动到C上。

if (n==1) printf("%c-->%c\n",a,c);
这一句,表示只有1个盘子的时候,那么就是把第一个盘子直接移到第三个盘子上。

else {hanoi (n-1,a,c,b);
如果超过一个盘字,则需要先把N-1个盘子通过C 移动到B上。

printf ("%c-->%c\n",a,c);
把剩下的第N个盘,从A移动到C上。

hanoi (n-1,b,a,c);}
再把剩下的在B上的N-1个盘,通过A移动到C上。

这属于一个递归算法。
现在,N=3。
我们看下程序怎么运行的。
else {hanoi (n-1,a,c,b);
printf ("%c-->%c\n",a,c);
hanoi (n-1,b,a,c);}

N=3,也就是开始程序会执行
hanoi (2,a,c,b);这句语句。

再看,2还是大于1,所以
程序会继续运行。 注意,这里,为hanoi (2,a,c,b); C和B 换了位置。

hanoi (2,a,c,b);
我们把数字代入,得出。
根据 N=2,C和B 互换。以及下面的代码,得出
````````````````````````````````````````````````
hanoi(n,a,b,c)
int n;
char a,b,c;
{if (n==1) printf("%c-->%c\n",a,c);
else {hanoi (n-1,a,c,b);
printf ("%c-->%c\n",a,c);
hanoi (n-1,b,a,c);}
}

```````````````````````````````````````````````
hanoi(2,a,c,b)
int n=2;
char a,c,b;
{if (n==1) printf("%c-->%c\n",a,b);
else {hanoi (1,a,b,c);
printf ("%c-->%c\n",a,b);
hanoi (1,c,a,b);}
} / 这并不是正确的代码,只是为了得出答案而写的一些数据。/
这样, 我们可以看出,程序会先执行
else {hanoi (1,a,b,c);
所以,开始会先输出A C(中间的符号省略,以下也一样)
然后,再输出
printf ("%c-->%c\n",a,b); A B
接着,执行
hanoi (1,c,a,b);} 这时候,就是C B了。

也就是说 hanoi(2,a,c,b) 的输出为 AC AB CB

你的问题就已经解决了。
接下来再返回第一层:

现在,N=3。
我们看下程序怎么运行的。
else {hanoi (n-1,a,c,b);
printf ("%c-->%c\n",a,c);
hanoi (n-1,b,a,c);}

这时候,我们再把数字代进去。
现在,N=3。
我们看下程序怎么运行的。
else {hanoi (2,a,c,b);
printf ("%c-->%c\n",a,c);
hanoi (2,b,a,c);}

根据上面的结论
/ 也就是说 hanoi(2,a,c,b) 的输出为 AC AB CB /

可以看出,先执行第一条语句:
else {hanoi (2,a,c,b);
则输出 AC AB CB
再执行第二条语句:
printf ("%c-->%c\n",a,c);
输出 AC
然后执行第三条
hanoi (2,b,a,c);}
根据这里,/ 也就是说 hanoi(2,a,c,b) 的输出为 AC AB CB /
字母进行替代后,A变B,C变A B变C。
所以输出的AC AB CB 则为

BA BC AC

所以,最终的结果为 AC AB CB AC BA BC AC

中间可能有很多废话,可以不看。
这样算下去,不管多少层都能推算出来,可复杂度会高得难以想像。追问

答非所问呀。。。这个不需要你解释。。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-19
这种东西一般都需要第三方控件,自己做的话只有在WPF里可以实现追问

第三方控件也行。能说几个第三方控件的名字吗? 或者发到我邮箱。。谢谢了。。

追答

dundas, syncfusion, dxpress都是知名的控件,你要用的是其中有关diagram的部分。
到verycd上自己当吧,很大不能发到邮箱里的,破解也要自己找哦。
安装完了看例子程序就会明白了

追问

太感谢了。。

追答

CSDN里应该会有很多资料,不妨找找

追问

找过了 没有吻合的。。。谢谢你了 我在下syncfusion 我看看他里面的组件先。。。
不过这个按理说也是要收费的。。。我这里版权方面管的很严。。惆怅呀 谢谢啦。。。
我还是等老师的思路吧。。

追答

如果考虑版权的话还是选择WPF用户控件吧,做出来也挺好看的

本回答被提问者采纳
相似回答