Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 幻方程序(C+;+;)_C++_Magic Square - Fatal编程技术网

C++ 幻方程序(C+;+;)

C++ 幻方程序(C+;+;),c++,magic-square,C++,Magic Square,对于那些不熟悉经典幻方算法的人:幻方是一个二维数组(nxn),每个位置包含一个介于值1和n^2之间的数值。每个值只能出现一次。此外,每行、每列和每对角线的总和必须相同。输入应该是奇数,因为我正在编写奇数幻方解 memset(MagicSquare, 0, sizeof(MagicSquare)); 我已经完成了这个问题,但到目前为止,它有一个未知的bug(逻辑?输出?),在过去的一个小时里一直困扰着我。输出的值非常离谱。如有任何帮助,我们将不胜感激: memset(MagicSqua

对于那些不熟悉经典幻方算法的人:幻方是一个二维数组(nxn),每个位置包含一个介于值1和n^2之间的数值。每个值只能出现一次。此外,每行、每列和每对角线的总和必须相同。输入应该是奇数,因为我正在编写奇数幻方解

  memset(MagicSquare, 0, sizeof(MagicSquare));

我已经完成了这个问题,但到目前为止,它有一个未知的bug(逻辑?输出?),在过去的一个小时里一直困扰着我。输出的值非常离谱。如有任何帮助,我们将不胜感激:

  memset(MagicSquare, 0, sizeof(MagicSquare));

#包括
#包括
使用名称空间std;
int main()
{
int n;
cout>n;
国际魔法广场[n][n];
纽罗国际酒店,
纽科尔;
//设置底部i中间的索引
int i=0;
int j=n/2;
//使用魔法数组填充数组的每个元素

对于(int value=1;value您忘记初始化
MagicSquare
以包含所有零:

  for(int i = 0; i < n; i++) {
    for(int j = 0; j < n; j++) {
      MagicSquare[i][j] = 0;
    }
  }
  memset(MagicSquare, 0, sizeof(MagicSquare));

因为C/++不会为您将其初始化为0。

您不能从用户处获取数字n,因为您必须使用常量定义数组的大小

您应该创建动态数组,以便从键盘侦听维度,但不要忘记在不需要时删除数组

您必须初始化包含所有元素的数组归零:

  memset(MagicSquare, 0, sizeof(MagicSquare));
否则会显示垃圾值。
注意:cstring头文件中包含memset函数

  memset(MagicSquare, 0, sizeof(MagicSquare));
您的更正:

  memset(MagicSquare, 0, sizeof(MagicSquare));
#包括
#包括
#包括
使用名称空间std;
int main()
{
int n;
//cout>n;
国际魔法广场[n][n];
纽罗国际酒店,
纽科尔;
memset(MagicSquare,0,sizeof(MagicSquare));
//设置底部i中间的索引
int i=0;
int j=n/2;
//使用魔法数组填充数组的每个元素
对于(int value=1;value
#包括
#包括
int main()
{
int arr[25][25]={0};
coutsize;
int i=0,j=(大小1)/2,n=1;
arr[i][j]=n;

虽然(Nand)bug是什么,确切地说,它在做什么,以及它和它应该做什么有什么区别?你试过使用调试器吗?是否尝试在调试器中调试它?GDB和VS C++快件是免费的。没有很多借口。初始化具有初始值的数组,即0。或者使用初始化数组的语言来定义。ault值。就像java将int初始化为0,将float设置为0.0,将object array设置为null。这是我编写的第一个问题。感谢内存!您有错误,对角线与not true中的对角线不同。您可以通过将数组放在单独的作用域{…}中来定义任意大小的数组当然,在这种情况下,请注意你的堆栈。“Archie,你能详细说明为什么这是合法的语法吗?我没有遵循,但是其他人似乎和你在同一页上。”Archie:这是不正确的。C++不允许可变长度数组,不管它们在什么范围内。有些编译器可能允许它作为扩展,但它不是标准的。。问题不是关于动态数组。现有答案是正确的。不鼓励只使用代码的答案。请添加有关为什么以及如何使用代码的解释。