Josephus问题

L_jila 2007-05-19 04:38:28
#include"iostream.h"
class Josephus
{
public:
Josephus();
void show(int m);
~Josephus();
public:
int a,b,size;
char* p[10][3];
};

Josephus::Josephus()//构造函数
{ size=10;
cout<<"请输入小孩的姓名:"<<endl;
for(a=0;a<size;a++)
for(b=0;b<3;b++)
cin>>p[a][b];
}

void Josephus::show(int m)
{
while(size>0)
{
if(m==size)//输入的数与size相等
size--;
else if(m<size)//输入的数比size小
{for(a=m-1;a<size-m;a++)
for(b=0;b<3;b++)
p[a][b]=p[a+1][b];
size--;
}
else
{for(a=size-m-1;a<size;a++)
for(b=0;b<3;b++)
p[a][b]=p[a+1][b];
size--;
}
}
cout<<"胜利者是:";
for(a=0;a<0;a++)
for(b=0;b<3;b++)
cout<<p[a][b];
}

Josephus::~Josephus()
{
cout<<"析构!";
}

void main()
{
Josephus x;
int m;
cout<<endl<<"请输入一个数:";
cin>>m;
x.show(m);
}


运行的时候输入数据,才输入第一个数据就显示:

"Ox00401dee"指令引用的"Oxcccccccc"内存。该内存不能为"written"。

要终止程序才行,这是为什么,哪里错了,怎么改??
...全文
231 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zycy 2007-05-24
  • 打赏
  • 举报
回复
通篇没有找到指针的的空间申请的未知,p里面放了30个为初始化的指针就直接用cin>>p[a][b],不错才怪~~~~~~~~~~~~~~~~~~~

楼主至少分析一下再问哈~~~
believefym 2007-05-24
  • 打赏
  • 举报
回复
char* p[10][3];
----
这个从你代码的意思来看貌似是输入小孩的姓名,用二维数组就够了吧


cin>>p[a][b];
很明显你还没对字符指针没有申请空间就直接输入,会产生你所说的错误
believefym 2007-05-24
  • 打赏
  • 举报
回复
char* p[10][3];是3维数组,而cout<<p[a][b];是对二维数组使用
-----
就是输出一个字符串,没问题吧
yoyo_alex_lw 2007-05-24
  • 打赏
  • 举报
回复
char* p[10][3];是3维数组,而cout<<p[a][b];是对二维数组使用
theendname 2007-05-24
  • 打赏
  • 举报
回复
up
xgbing 2007-05-19
  • 打赏
  • 举报
回复
跟一下

64,651

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧