多元素判断的程序的一个简单实现方法

现在我们要实现这样一个程序片段(伪代码):

array1={e11,e12,e13,...};

array2={e21,e22,e23,...};

array3={e31,e32,e33,...};

.......

arrayn={en1,en2,en3,...};

 

if elem ∈ array1

    exp1;

else if elem  ∈ array2

   exp2;

......

else if elem  ∈ arrayn

  expn;

 

每个判断都是在一个数组中寻找某个元素是否存在,该如何实现呢?

将elem与数组的每个元素依次比较,比较表达式之间用或连接起来,这是一个办法。但这个方法在数组元素较多时会使条件表达式变得冗长,能否考虑使用for循环呢?

棘手的是if后面不能直接接for语句,我们必须做一下变通,先使用for语句判断elem属于哪一个数组,并用一个标识符flag来标示,接着再用标识符来控制执行语句。同样以伪代码来说明:

for(arrayi[j])     //i=1,2,3,...,n

  if(elem==arrayi[j])

   {

      flag=flagi;

      break;

    }

 

switch(flag)

{

  case flag1:exp1;

 case flag2:exp2;

 ......

 }

凡是一次判断涉及多个元素的程序都可以用这种办法来做。

这种办法有一个不足之处,当elem不是属于最后一个数组的时候,对elem所属数组判断之后的判断是多余的。用goto跳转可以解决,有没有更好的办法?

    

posted @ 2012-10-30 23:11  不堪一喵  阅读(207)  评论(0编辑  收藏  举报