您的位置:首页 > 编程语言 > C语言/C++

约瑟夫问题源码(用c++编写)——————凌风

2009-09-16 17:20 405 查看
////用面向对象的方法编程解决约瑟夫问题////
#include<iostream>
#include<casssert>//<cassert>-用于在程序执行时执行

断言
using namespace std;

class Joseph{
protected:
int number_of_people;//围坐在一起的人数
int step;//每次数的人的个数
public:
virtual void CreatOutput()=0;
joseph(int n,int m){

number_of_people=n;
step=m;
}
};//声明类的作用是做什么?

class JosephWithArray:public Joseph{
int*WorkingArray;
int NextPeople(int prev);
//上面三行的作用分别是?
public:
JosephWithArray9int n,int m);
void GreatOutput();
~JosephWithArray(){delete[]workingArray;}//~

是什么?
};

JosephWithArray::JosephWithArray(int n,int

m):Joseph(n,m){
WorkingArray=new int
;
for(int i=o;i<n,i++)
WorkingArray[i]=i+1;
}

void JosephWithArray::CreatOutput(){
int i;
int outnum=-1;
for(i=0;i<number_of__people);i++){
outnum=NextPeople(outnum);
assert(outnum>-1&&outnum<number_of_number);
cout<<WorkingArray[outnum]<<"";
WorkingArray[outnum]=0;
}
cout<<endl;
}

int JosephWithArray::NextPeople(int prev){
int count=0;
int travel=prev;
int emptyplace=0;
while(count<step){
travel=(travel+1)%number_of_people;
if(WorkingArray[travel]{
count++;
emptyplace=0;
}
else{
emptyplace++;
if(emptyplace==number_of_people)
return -1;
}
}
retrun travel:
}
int main(){
int n,m;
cout<<"please input number of people:"
cin>>n;
cout<<"please input step:"
cin>>m
JosephWithArray obj(n,m);//这里有一个不明白的地方

obj.CreatOut();
}

这是我从书上敲进电脑的,怎么用VC运行时出现了很多BUGS,我还要一步步调试,请帮我找找问题
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: