很急!跪求汉诺塔C++程序

来源:百度知道 编辑:UC知道 时间:2024/05/14 19:51:38
高手快快帮忙呀,小弟快挂科了。
所有问题要求图形化显示
问题:
1、已知有三个塔(1、2、3)和n个从大到小的金碟子,初始状态时n个碟子按从大到小的次序从塔1的底部堆放至顶部。
2、要求把碟子都移动到塔2(按从大到小的次序从塔2的底部堆放至顶部)。
3、每次移动一个碟子。
4、任何时候、任何一个塔上都不能把大碟子放到小碟子的上面。
5、可以借助塔3。
作业要求:
1、在窗口中画出初始时塔和碟子的状态。
2、可以以自动或手动两种方式搬移碟子。
3、自动搬移可以通过定时器或多线程的方法,每一次移动的时间间隔可以自定,以人眼观察比较舒服为宜,每一次的移动过程如能实现动画最好。
4、定义塔的描述类和碟子的描述类。
5、在程序中,碟子的数目及每次移动的时间间隔可以通过对话框设置(也应该有默认值)。
6、支持暂停功和继续的功能(在自动搬移过程中可以暂停,并继续)。
7、暂停后,可以将当前的状态保存(碟子和塔的组合关系)。
8、可以从7中保存的文件中读出某个状态,并继续移动。

这题我作过
#include <iostream>
using namespace std;
void move(int n,char s, char d)
{
cout<<n<<","<<s<<" ̄"<<d<<endl;
}
void hanoi (int n,char a='a',char b='b',char c='c')
{
if(1==n) move(n,a,c);
else
{
hanoi(n-1,a,c,b); move(n,a,c); hanoi(n-1,b,a,c);
}
}
int main ()
{
int a;
cin>>a;
hanoi(a);
return 0;
}

画出?是VC程序么?
我资料里有联系方式

//1,2,3即是A,B,C.LOOK CAREFULLY!
#include<iostream>
#include<cmath>
using namespace std;

void move(char e,char f)//定义方向移动函数
{
cout<<e<<" -> "<<f<<endl;//表示从e柱移动一个盘子到f柱
}
void hanoi(int n,char a,char b,char c)
{
if(n==1)
move(a,c);
else
{
hanoi(n-1,a,c,b);
move(a,c);
hanoi(n-1,b,a,c);
}
}