如何处理案件的数量?

时间:2013-05-29 05:42:23

标签: c algorithm switch-statement labview

这实际上是LabVIEW中的一个程序,但我可以在labview中编写C个脚本和/或在logic中模拟与LabVIEW中相同的C 。也是为了吸引更多答案。所以我主要需要算法。请阅读整个问题。

在我的应用程序中,我有5个变量说:

var1 -> type string,
var2 -> type string,
var3 -> type array of strings,
var4 -> type array of strings,
var5 -> type boolean 

现在这5个变量控制着我应该如何过滤从文件中读取的数据 因此,我有一个开关案例,它将根据这些输入执行操作。

要控制开关我这样做:

  • 如果var1为空,则为false
  • 如果var2为空则为false。
  • 如果var3是一个空数组,那么false
  • 如果var4是一个空数组,那么false
  • 如果false的var5 true

所以我得到一个5位组合,所以我可以有32个值,因此有32种类型的过滤器,即32种情况!。

例如,如果var1为空,var2不为空,var3不为空,var4为空,var5为真,那么我有01101(十二月十三日)所以我选择了第13个过滤器。

编码这真是忙乱,所以我想崩溃案件的数量。怎么做?
我正在寻找的是一种算法。

这是labview代码

This is the case conrol

var1 - >运营商名称,var2->主管名称,var3-> JobID,var4->多批次选择,var5->无效日期。

EDIT。 ; 例如 如果var1和var3不为null,那么我必须从文件中读取数据,使其包含var1和var2数据。

例如2
现在如果var1,var3,var5不为null,那么我需要选择数据,使其具有var1和var3以及var5的通用数据。

例如3
如果我有var1,var3,var4,var5我需要获取包含var1 var3 var4 var5常见数据的数据。

e.g4
如果我只有var3,我只需要获取与var3相关的数据。

1 个答案:

答案 0 :(得分:1)

有许多可能性可以满足您的要求/提出改进建议。

  1. 对于您进行的每项测试,都有一个嵌套的Case结构。这里的建议是:如果您有某些更可能失败的测试,请将它们放在外面。这样你就可以优化执行。

  2. 您已拥有的Case结构可以使用范围处理多个案例。例如,您可以通过在“案例选择器”框中键入1..10来处理数字1到10。您可以通过连续某些案例来减少案件数量。

  3. 我不确定您使用的是哪个版本的LabVIEW,但您正在进行的某些测试可以简化一些。例如,我相信LabVIEW 2011及更高版本,您可以使用特殊的空映射测试和空字符串测试。

  4. 此外,不要使用5 Insert Into Array函数,而是尝试单个Build Array函数,该函数已展开以保存您拥有的布尔数。

  5. 如果你有更多的布尔值,我认为“指数增长”就是这里增加的类型。案例数(理论上)是2 ^(变量数)。