这实际上是 LabVIEW
中的一个程序,但我可以在 labview 中编写 C
脚本和/或在 中模拟相同的
与 逻辑
LabVIEWC
一样。也为了吸引更多的答案。所以我主要只需要算法。请阅读整个问题。
在我的应用程序中,我有 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
。 - 如果 var5
false
或true
。
所以我得到一个 5 位组合,所以我可以有 32 个值,因此有 32 种类型的过滤器,即 32 种情况!
例如,如果 var1
为空,则 var2
不为空,var3
不为空,var4
为空,var5
为真,那么我有 01101(12 月 13 日)。所以我选择第 13 个过滤器。
编写此代码真的很忙,所以我想折叠案例数量。怎么做?
我正在寻找的是一种算法。
这是labview代码
var1 -> 运算符(operator)姓名, var2->主管姓名, var3->JobID, var4-> 多批处理选择, var5->无效日期。
编辑。 ;
例如
如果 var1 和 var3 不为空,那么我必须从文件中读取数据,使其包含 var1 和 var2 数据。
例如2
现在,如果 var1、var3、var5 不为空,那么我需要选择数据,以便它具有 var1、var3 和 var5 共有的数据。
例如 3
如果我有 var1、var3、var4、var5,我需要获取包含 var1 var3 var4 var5 共有的数据的数据。
例如4
如果我只有 var3,我只需要获取与 var3 相关的数据。
最佳答案
有多种方法可以执行您要求/提出的改进建议。
对于您执行的每个测试,都有一个嵌套的 Case 结构。此处的建议:如果您有某些更可能失败的测试,请将它们放在外面。这样你就可以优化执行。
您已有的 Case 结构可以通过使用范围来处理多个 case。例如,您可以通过在大小写选择器框中键入 1..10 来处理数字 1 到 10。您可以通过连续处理某些案例来减少案例数量。
我不确定您使用的是哪个版本的 LabVIEW,但是您正在进行的一些测试可以稍微简化。例如,我相信在 LabVIEW 2011 及更高版本中,您可以使用特殊的空数组测试和空字符串测试函数。
另外,不要使用 5 个 Insert Into Array 函数,而是尝试使用一个扩展的 Build Array 函数来保存您拥有的 bool 值的数量。
我认为“指数增长”是这里指的增长类型,如果你有更多 bool 值的话。案例数(理论上)是 2^(变量数)。
关于c - 崩数的情况下如何处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16806296/