c - 崩数的情况下如何处理?

标签 c algorithm switch-statement labview

这实际上是 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 falsetrue

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

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

编写此代码真的很忙,所以我想折叠案例数量。怎么做?
我正在寻找的是一种算法。

这是labview代码

This is the case conrol

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 相关的数据。

最佳答案

有多种方法可以执行您要求/提出的改进建议。

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

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

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

  4. 另外,不要使用 5 个 Insert Into Array 函数,而是尝试使用一个扩展的 Build Array 函数来保存您拥有的 bool 值的数量。

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

关于c - 崩数的情况下如何处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16806296/

相关文章:

c - 在子进程中调用 execlp() 后如何打印 f()?

c - 如何从 char 数组转换/复制以便我可以将它存储在 char 指针数组中?

使用 -O2 与 -O1 时,Cygwin64 gcc C/汇编程序崩溃

algorithm - 加权图中的寻路游戏

c++ - 我的 switch 语句没有干净地退出循环

c - 编写一个程序以继续处理整数直到素数

algorithm - 关节点忽略通向直接父级的边的反转

javascript - 在javascript中使用子字符串/切片递归

c++ - 开关盒 : declaration-with-initialization & declaration-and-then-assignment

java - while(true) 循环中的 switch 语句,文本出现两次