gpt4 book ai didi

c++ - 初学者 C++ 生命游戏程序的问题

转载 作者:太空宇宙 更新时间:2023-11-04 15:53:09 25 4
gpt4 key购买 nike

背景:我是编程的新手。这是我目前在生命游戏的草稿中所拥有的:

#include <iostream>

using namespace std;

int main()
{

//INTRODUCTION

int arraySize;
cout << "What is the length of your square-shaped grid? Enter an integer value greater than 0. Too big will cause problems.";
cin >> arraySize;
int original[arraySize][arraySize];

//REQUESTS INPUT FOR ARRAY

for (int n = 0; n < arraySize; n++)
{
for (int x = 0; x < arraySize; x++)
{
bool ValInput;
cout << "\n" << n << "," << x << "...";
cin >> ValInput;
original[n][x] = ValInput;
}
}

cout << "\n\n\n";

//DISPLAYS ARRAY

for (int row = 0; row < arraySize; row++)
{
for (int column = 0; column < arraySize; column++)
{
cout << original[row][column] << " ";
if (column == arraySize - 1)
{
cout << "\n";
}
}
}

cout << "Next frame.\n\n";

//FORMS NEXT FRAME WITH VALUES OF # OF LIVE NEIGHBORS

int liveNeighbors = 0;

for (int z = 0; z < arraySize; z++)
{
for (int h = 0; h < arraySize; h++)
{
liveNeighbors = 0;
if (z - 1 > -1)
liveNeighbors += original[z - 1][h];
if (z + 1 < arraySize)
liveNeighbors += original[z + 1][h];
if (h - 1 > -1)
liveNeighbors += original[z][h - 1];
if (h + 1 < arraySize)
liveNeighbors += original[z][h + 1];
if (z - 1 > -1, h - 1 > -1)
liveNeighbors += original[z - 1][h -1];
if (z - 1 > -1, h + 1 < arraySize)
liveNeighbors += original[z - 1][h + 1];
if (z + 1 < arraySize, h - 1 > -1)
liveNeighbors += original[z + 1][h - 1];
if (z + 1 < arraySize, h + 1 < arraySize)
{
liveNeighbors += original[z + 1][h + 1];
}
cout << liveNeighbors << " ";

}
}

}

问题出现在我到目前为止所做的最后一步(显示每个单元格有多少活邻居。

示例:如果样本输入首先是 4x4 网格的“4”,然后您输入各种 1 和 0,则 liveNeighbors 值是不现实的。它可能有数百个,而最大值应该只有 8 个。

如果您能帮我找到解决问题的方法,那就太好了。但是,请记住我是新手。

谢谢你:)

最佳答案

你的某些条件是错误的:

if (z - 1 > -1, h - 1 > -1) /* ... */
if (z - 1 > -1, h + 1 < arraySize) /* ... */
if (z + 1 < arraySize, h - 1 > -1) /* ... */
if (z + 1 < arraySize, h + 1 < arraySize) /* ... */

逗号不符合您的预期,您需要的可能是一个逻辑“与”,在 C++ 中是运算符 && :

if ((z - 1 > -1) && (h - 1 > -1)) /* ... */
if ((z - 1 > -1) && (h + 1 < arraySize)) /* ... */
if ((z + 1 < arraySize) && (h - 1 > -1)) /* ... */
if ((z + 1 < arraySize) && (h + 1 < arraySize)) /* ... */

添加额外的括号只是为了便于阅读,不是必需的。

如你所知,这是逗号运算符的标准定义:

A pair of expressions separated by a comma is evaluated left-to-right and the value of the left expression is discarded.

在您的情况下,逗号左侧的比较在 if 条件中基本上没有任何作用。

关于c++ - 初学者 C++ 生命游戏程序的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4580296/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com