我如何在流程图中显示这个?
Posted
技术标签:
【中文标题】我如何在流程图中显示这个?【英文标题】:How do I show this in flowchart? 【发布时间】:2021-12-25 14:37:02 【问题描述】:我有两个 4 位数组,两个数组本身由不同的数字组成,例如 Array1:1234, Array2:4567。 首先,我应该检查这两个数组的任何数字是否相同 其次,如果有相同的数字,我应该检查除最后一个之外是否还有其他相同的数字。
如何在流程图中显示?
【问题讨论】:
您必须先进行尝试,并展示您所考虑的算法,以满足您描述的用例。当您写“检查任何数字”时,您的意思是检查数字(可能是4位数字)。 @AnandSowmithiran 我认为他有type Arr = array of char [4]
并且实际上在谈论数字。
嗯,他甚至没有告诉任何关于他打算使用的语言。可能他的意思是数字。基本上它是他正在寻找的那两个数组的交集。
【参考方案1】:
这是使用 ASCII 艺术的流程图。您可能希望使用图形程序来创建更漂亮的图片。
.--------+ .--------+
/ Array1 / / Array2 /
+--------' +--------'
| |
+---->+<----+
|
v
/ \
/ \ +--------------+
/ \ No | Find numbers | .------.
+ Same? +----> common to |->( Done. )
\ / | both arrays. | `------'
\ / +--------------+
\ /
+
| Yes
.-----v-----.
( Done. )
`-----------'
为了表示实际的算法,流程图允许通过画一条线循环到图中较早的组件上进行迭代。您将使用决策框来测试循环不变量是否为真或测试停止条件。然后决策框将继续循环或移动到不同的逻辑路径。
例如,检查一个数组是否有数字 0:
.-------+
/ Array /
+-------'
|
+---v-------+
| Start at |
| beginning |
| of array |
+-----------+
| +-----------------+
+<-------| Increment index |<---------------+
| +-----------------+ |
v + |
/ \ / \ |
/ \ +------------------+ / \ |
/ At \ No | Compare number | / \ No |
+ end? +----> at current array |--> Same? +----+
\ / | index with 0. | \ /
\ / +------------------+ \ /
\ / \ /
+ +
| Yes | Yes
.--v-------. .--v---.
( Not found. ) ( Found. )
`----------' `------'
【讨论】:
流程图的好处是,问题是,它使所需的抽象级别可以解释:) 所以,一个简单的 1 框的东西也可以:(a1,a2) -> (Common Number Task) -> (common-digits)
如果您首先对两个数组进行排序,您将获得更高效(运行时)的解决方案。然后,您可以使用 2 个索引 i,j 迭代两个数组 a1,a2 并根据数字关系,您可以递增 i (a1[i]
@BitTickler 我将这个问题理解为如何将算法转换为流程图,而不是关于如何提出算法的问题。【参考方案2】:
这个问题通常涉及软件开发的一个敏感领域。
有一种观点认为,在实施某事之前先彻底计划是有益的。
另一个学派不同意。他们通常更喜欢“快速原型设计”而不是绘制流程图。并有一些非常好的和正当的理由:
软件开发的每一步都需要一个验证步骤(质量门原则)。如何验证流程图是否正确?
有人刚刚发明了一种新的编程语言,流程图语言。仅仅因为它是图形化的,它并不能避免编程语言的典型问题:难以证明正确性,而执行(测试)通常会在解决方案中产生足够的信任。
所以,至于问题,由于我更喜欢阵营(2),而不是阵营(1),我的建议是:首先实现您的想法,然后如果有人绝对想要它,请创建流程图你的解决方案。或者甚至更好地使用工具,将您的实现转换为流程图(避免转录错误)。
【讨论】:
以上是关于我如何在流程图中显示这个?的主要内容,如果未能解决你的问题,请参考以下文章
word中有一个比较大的流程图,流程图下面部分显示不出来,又不在下一页显示,怎么办