C++ if/else 网格系统

标签 c++ function loops if-statement

我正在尝试创建一个 C++ 程序,它将在 4x4 网格上移动 X 并显示每个移动。我们不允许使用数组,因为我们还没有学会如何使用。我知道我应该使用 16 个 if/else 语句,但我不确定从那里该做什么。我知道有一种比绘制每个可能的选项更简单的方法,因为那将永远花费!!!我该怎么办???

编辑:只允许向上/向下/向左/向右移动。我的意思是显示每个 Action ,它首先应该显示用户的起点(我已经设置好了),然后它应该打印带有连续 Action 的网格,包括所有之前的 Action ,直到它到达终点。

最佳答案

注意:我最初是根据对后来证明是错误的任务的假设来写这个答案的。但是,我会留下答案,因为我相信它可能仍然包含对 OP 有用的信息。

当您有 x 种不同的可能情况时,您并不总是需要 if/else with x 分支机构。诀窍是找到一种方法来使用相同计算(通常是一个或多个数学表达式,可能还有循环)来处理所有或大多数情况。

在这种情况下,4x4 网格上确实有 16 个不同的位置,表示位置的一种方法是存储其行号和列号(每个值都在 0 到 3 之间)。通过使用两个循环,一个在另一个循环中(嵌套 循环),您可以生成所有 16 种行和列位置组合。我现在假设你应该打印例如. 在网格的空单元格上。在内部循环中,您需要确定是应该打印 . 还是 X。你应该问什么问题才能弄清楚?简单地说“嵌套循环当前的行号和列号是否与 X 的位置相同的行号和列号?”

看到更新后编辑:即使在使用网格时,也只有在必须存储有关每个单元格的信息时才需要数组,因此如果可以生成,有时可以不用数组来自较少信息的网格信息(例如 X 的位置)。但是,如果您需要跟踪以前的位置,则需要一个数组(一维或二维)才能优雅地完成。我会说这个任务的“无数组”限制没有教育意义,因为它强制使用一种不自然且非常麻烦的方式来解决这个任务。 :-((但是,如果您的讲师随后给出了相同的任务并允许您使用循环,这将很好地演示循环为何有用。)

你可以做的是使用 16 个 bool 变量(最初全部设置为 false),名称如 grid00 grid01grid02grid03grid10、...、grid33。然后制作两个方法,bool isOccupied(int row, int column)void occupied(int row, int column) 使用 16 路 if/else 语句允许您轻松读取和更改对应于给定位置的变量。

关于C++ if/else 网格系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35119038/

相关文章:

Javascript 在异步循环结束时执行

javascript - 如果 Javascript 中的变量低于零,则使用 while 循环显示消息

c++ - 如何延长OpenCV中绘制的线?

C++ 继承相同类型签名的成员函数(影子)

c++ - 使用 : while (cin >> x) and eof

function - Julia:函数对象

java - R.id.ImageButton 的值是多少?

C++类型转换

c - 涉及静态局部变量的递归函数中的意外输出

python - 难以理解 Python 中的嵌套函数