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; }
相关文章推荐
- C++第4周项目5 - 数组作数据成员(扩展1动态开辟空间)
- 为数组动态开辟空间,合理使用内存资源
- C++ - 动态申请数组空间
- C++内存分配及变长数组的动态分配
- c++动态分配二维/三维数组的内存
- 【基础知识】C/C++动态开辟空间
- 算法题:将一个数组中所有奇数放前面和偶数放后面(不开辟新的内存空间)
- C++基础学习笔记----第五课(动态内存分配、命名空间、强制类型转换)
- C++基础:动态内存开辟new_delete
- C++内存分配及变长数组的动态分配
- c++动态内存开辟之 new 的三种形态
- C++中用new开辟内存空间和非new开辟内存空间的区别
- 数组内存的动态开辟和释放
- C++内存分配及变长数组的动态分配
- C++ 动态分配数组空间,以及opencv中Mat类的初始化
- 浅谈 c++ 与 c 中的动态内存开辟问题
- 【c++程序】在构造函数中开辟内存空间
- C与C++中动态数组的生成及内存动态管理
- C++ 动态开辟空间
- C动态字符串,动态开辟内存空间相关 malloc realloc 用法