我如何在流程图中显示这个?

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) -&gt; (Common Number Task) -&gt; (common-digits) 如果您首先对两个数组进行排序,您将获得更高效(运行时)的解决方案。然后,您可以使用 2 个索引 i,j 迭代两个数组 a1,a2 并根据数字关系,您可以递增 i (a1[i] @BitTickler 我将这个问题理解为如何将算法转换为流程图,而不是关于如何提出算法的问题。【参考方案2】:

这个问题通常涉及软件开发的一个敏感领域。

有一种观点认为,在实施某事之前先彻底计划是有益的。

另一个学派不同意。他们通常更喜欢“快速原型设计”而不是绘制流程图。并有一些非常好的和正当的理由:

    软件开发的每一步都需要一个验证步骤(质量门原则)。如何验证流程图是否正确?

    有人刚刚发明了一种新的编程语言,流程图语言。仅仅因为它是图形化的,它并不能避免编程语言的典型问题:难以证明正确性,而执行(测试)通常会在解决方案中产生足够的信任。

所以,至于问题,由于我更喜欢​​阵营(2),而不是阵营(1),我的建议是:首先实现您的想法,然后如果有人绝对想要它,请创建流程图你的解决方案。或者甚至更好地使用工具,将您的实现转换为流程图(避免转录错误)。

【讨论】:

以上是关于我如何在流程图中显示这个?的主要内容,如果未能解决你的问题,请参考以下文章

如何解决处理流程图的这些问题?

word中有一个比较大的流程图,流程图下面部分显示不出来,又不在下一页显示,怎么办

“Service MeasurementBrokerService正在使用中”正在我的申请流程中显示

iOS 共享扩展流程

在 SDI MFC 应用程序中绘制流程图

如何更改故事板流程