那个大哥来帮我改下错 c++ 一小段

来源:百度知道 编辑:UC知道 时间:2024/06/23 13:08:49
#include<string>
#include<iostream>
using namespace std;
class Hanoi

{
public:
Hanoi(int disks); //构造函数
void solve();//求解过程
private:
//待移动的金片总数
int totalDisks;
//将numDisksge金片从init杆移至desti杆(借助temp杆)
void move(int numDisks,string init, string desti, string temp);
//将编号为numDisk的金片从init杆移至desti杆
void moveOne(int numDisk,string init,string desti);
};
//汉诺塔问题的求解
void Hanoi::solve()
{string init="A",desti="C",temp="B";
//将totalDisks个金片从init杆移至desti杆(借助temp杆)
move(totalDisks,init,desti,temp);
}
//将numDisk个金片从init杆移至desti杆(借助temp)
void Hanoi::move (int numDisks,string init,string desti,string temp)
{
if (numDisks==1)
moveOne(numDisks,init,desti);
else
{
move(numDisks -1,init,temp,desti);
moveOne(numDisks,init,desti);
move(numDisks-1,temp,desti,init);
}
}
in

其中有几个问题
1.disks 这个没定义
2.Hanoi 类没有实现构造函数
3.你是int main() 所以最后要加个return o避免VC编译发生警告

正解如下:
#include<string>
#include<iostream>
using namespace std;
class Hanoi
{
public:
Hanoi(int disks); //构造函数
void solve();//求解过程
private:
//待移动的金片总数
int totalDisks;
//将numDisksge金片从init杆移至desti杆(借助temp杆)
void move(int numDisks,string init, string desti, string temp);
//将编号为numDisk的金片从init杆移至desti杆
void moveOne(int numDisk,string init,string desti);
};
Hanoi::Hanoi(int disks)
{
totalDisks=disks;
}
//汉诺塔问题的求解
void Hanoi::solve()
{string init="A",desti="C",temp="B";
//将totalDisks个金片从init杆移至desti杆(借助temp杆)
move(totalDisks,init,desti,temp);
}
//将numDisk个金片从init杆移至desti杆(借助temp)
void Hanoi::move (int numDisks,string init,string desti,string temp)
{
if (numDisks==1)
moveOne(numDisks,init,d