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

C++动态螺旋数组 怎么样开辟合适内存空间

2014-10-21 21:34 211 查看
/*
**DUG 当输入行数小于列数时 程序BUG
问题所在: 动态分配的内存不足
那么应该分配多少的内存才合适?
*/

#include
using namespace std;

int TestArry(int , int ); //螺旋数组函数

int main(void)
{
int m, n;

while (1)
{
cout << "请输入要构造螺旋数组的行列: \n";
cin >> m;
cin >> n;

TestArry(m, n);
}

return 0;
}

int TestArry(int M, int N)
{
int  i, j;
int n, m = 1;

printf("构造的螺旋数组 p[%d][%d] 如下\n", M, N);

//开辟一个动态二维数组
int **p;
p = new int *[M+N];

for (i = 0; i < M+N; i++)
{
p[i] = new int
;
}

//螺旋数组的实现
for (n = 0; n < M / 2 + 1; n++)//此循环是螺旋循环的次数
{
for (j = n; j < N - n; j++)//第一次循环时第一行的循环
{
p
[j] = m++;
}
for (i = n + 1; i < N - n; i++)//第一次循环的最后一列
{
p[i][N - n - 1] = m++;
}
for (j = M - n - 2; j>n; j--)//第一次循环最后一行
{
p[M - n - 1][j] = m++;
}
for (i = M - n - 1; i > n; i--)//第一次循环的第一行
{
p[i]
= m++;
}

}
//输出螺旋数组
for (i = 0; i < M; i++)
{
for (j = 0; j < N; j++)
printf("%d\t", p[i][j]);

printf("\n");
}

delete[]p;
p = NULL;

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: