蛇行数组排列问题,第一次用动态2D数组,不知道哪里错了

youleelove 2008-07-04 12:00:43
比如输入3,得到3阶数组的如下排列
“1 3 4
2 5 8
6 7 9


编译可以通过,但运行时显示内存出了问题。第一次用2D动态数组,不太熟,不知道哪里出了问题。自己调试时总是出现汇编代码,不知如何解决,也请高手同解答。谢谢!


#include <iostream>
using namespace std;

void fill (int **a, int l);
int main()
{
/*first initialize the 2D array*/

int **array;
int lenth;
cin>> lenth;


array = new int *[lenth];//// 动态二维数组用法
for(int k = 0; k< lenth; k++)
{
array[k] = new int [lenth];
}

fill (array, lenth);//函数调用


//打印处理后的数组
for (int i = 0; i < lenth; i ++)
cout<<endl;
for (int j = 0; j < lenth; j++)
{
cout<<array[i][j]<<" ";

}

return 0;
}

void fill( int **a, int l)
{
int i = 0, j = 0;
int number = 1;
int d =1;//d的数字表示移动状态,初始状态为向下一步


for (int k = 0; k < l*l; k++)
{
a[i][j] = number;
number++;

switch (d)
{
case 1://向下
i++;
if (j ==0)
d = 3;
else d = 4;
break;

case 2://向右
j++;
if (i == 0)
d = 4;
else d = 3;
break;

case 3://右上
j++;
i--;

if (j == l-1)
d = 1;
else d = 2;
break;
case 4://左下
i++;
j--;

if ( j==l-1)
d = 2;
else d = 1;
break;

}

}

}



...全文
102 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
macfan 2008-07-04
  • 打赏
  • 举报
回复
http://www.netinter.cn/info/html/chengxusheji/C-C--/20080224/12639.html
看看这篇文章.
macfan 2008-07-04
  • 打赏
  • 举报
回复
记得delete掉内存
youleelove 2008-07-04
  • 打赏
  • 举报
回复
谢谢macfan,问题解决了,文章里2D数组讲的很好

64,648

社区成员

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

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