【发布时间】:2021-03-16 15:43:58
【问题描述】:
我编写了一个使用 Loubere 算法求解幻方的代码。我已经为这个算法创建了一个函数,我想使用 int** 返回一个值,但是我应该怎么做,因为我在函数体中使用了 2D 数组,我应该如何将它存储在 main() 函数中
#include <iostream>
#include <cstdlib>
using namespace std ;
int ** magicSquare ( int size )
{
int number;
int sq=size*size;enter code here
int mid=size/2;
//for array
int m=0;
//rows
int n=mid; //columns
array[m][n]=n;
for(number=1; number<=sq; number++)
{
n++;
n=n-1;
m=m+1;
if(n==-1)
n=3;
if(m==3)
m=0;
if (array[n][m] !=0)
n++;
array[n][m]=number;
}
int* array_rows[size]=array[size][size];
int** p=array_rows;
return p;
}
int main()
{
int dimension;
cout<<"Enter dimension of the magic square : "; cin>>dimension;
magicSquare ( dimension );
}
【问题讨论】:
-
返回
std::vector<std::vector<int>>而不是int**。 -
你需要正确缩进你的代码。
-
这行
array[m][n]=n;你打算做什么? -
你需要先分配一个数组
-
“返回二维数组”和“返回
int**”是有区别的。您想要前者,但您的代码执行后者。指针不是数组