TC官方合作论坛

 找回密码
 立即注册
查看: 464|回复: 5
打印 上一主题 下一主题

[问题] 关于代码的优化, 我这个代码能不能用遍历语句简化?

[复制链接]
跳转到指定楼层
楼主
发表于 2014-11-7 16:29:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 T星人 于 2014-11-7 19:48 编辑

请各位大神帮我看下可以吗,  在线等
  1.         d
  2.         if(十六数[7]!=0)
  3.       d=十六数[7]&十六数[6]&十六数[5]&十六数[4]&十六数[3]&十六数[2]&十六数[1]&十六数[0]
  4.         else
  5.       if(十六数[6]!=0)
  6.             d=十六数[6]&十六数[5]&十六数[4]&十六数[3]&十六数[2]&十六数[1]&十六数[0]
  7.       else
  8.             if(十六数[5]!=0)
  9.                    d=十六数[5]&十六数[4]&十六数[3]&十六数[2]&十六数[1]&十六数[0]
  10.             else
  11.                    if(十六数[4]!=0)
  12.                          d=十六数[4]&十六数[3]&十六数[2]&十六数[1]&十六数[0]
  13.                   else
  14.                         if(十六数[3]!=0)
  15.                                 d=十六数[3]&十六数[2]&十六数[1]&十六数[0]              
  16.                          else
  17.                                 if(十六数[2]!=0)
  18.                                       d=十六数[2]&十六数[1]&十六数[0]                 
  19.                                 else
  20.                                       if(十六数[1]!=0)
  21.                                             d=十六数[1]&十六数[0]
  22.                                       else
  23.                                              if(十六数[0]!=0)
  24.                                                     d0=十六数[0]
  25.                                              endif
  26.                                      endif
  27.                                endif
  28.                         endif
  29.                   endif
  30.            endif
  31.      endif
  32.         endif
复制代码





  1.         d7,d6,d5,d4,d3,d2,d1,d0
  2.         if(十六数[7]!=0)
  3.             d7=十六数[7]
  4.             d6=字符串.连接(d7,十六数[6])
  5.             d5=字符串.连接(d6,十六数[5])
  6.             d4=字符串.连接(d5,十六数[4])
  7.             d3=字符串.连接(d4,十六数[3])
  8.             d2=字符串.连接(d3,十六数[2])
  9.             d1=字符串.连接(d2,十六数[1])
  10.             d0=字符串.连接(d1,十六数[0])
  11.         else
  12.             if(十六数[6]!=0)
  13.                 d6=十六数[6]
  14.                 d5=字符串.连接(d6,十六数[5])
  15.                 d4=字符串.连接(d5,十六数[4])
  16.                 d3=字符串.连接(d4,十六数[3])
  17.                 d2=字符串.连接(d3,十六数[2])
  18.                 d1=字符串.连接(d2,十六数[1])
  19.                 d0=字符串.连接(d1,十六数[0])
  20.             else
  21.                 if(十六数[5]!=0)
  22.                     d5=十六数[5]
  23.                     d4=字符串.连接(d5,十六数[4])
  24.                     d3=字符串.连接(d4,十六数[3])
  25.                     d2=字符串.连接(d3,十六数[2])
  26.                     d1=字符串.连接(d2,十六数[1])
  27.                     d0=字符串.连接(d1,十六数[0])
  28.                 else
  29.                     if(十六数[4]!=0)
  30.                         d4=十六数[4]
  31.                         d3=字符串.连接(d4,十六数[3])
  32.                         d2=字符串.连接(d3,十六数[2])
  33.                         d1=字符串.连接(d2,十六数[1])
  34.                         d0=字符串.连接(d1,十六数[0])
  35.                     else
  36.                         if(十六数[3]!=0)
  37.                         d3=十六数[3]   
  38.                         d2=字符串.连接(d3,十六数[2])
  39.                         d1=字符串.连接(d2,十六数[1])
  40.                         d0=字符串.连接(d1,十六数[0])                           
  41.                         else
  42.                             if(十六数[2]!=0)
  43.                                 d2=十六数[2]
  44.                                 d1=字符串.连接(d2,十六数[1])
  45.                                 d0=字符串.连接(d1,十六数[0])                                
  46.                             else
  47.                                 if(十六数[1]!=0)
  48.                                     d1=十六数[1]
  49.                                     d0=字符串.连接(d1,十六数[0])
  50.                                 else
  51.                                     if(十六数[0]!=0)
  52.                                         d0=十六数[0]
  53.                                     endif
  54.                                 endif
  55.                             endif
  56.                         endif
  57.                     endif
  58.                 endif
  59.             endif
  60.         endif
复制代码

回复

使用道具 举报

沙发
 楼主| 发表于 2014-11-7 16:37:16 | 只看该作者
能用遍历语句简化吗  求大神光顾!!
回复 支持 反对

使用道具 举报

板凳
发表于 2014-11-7 16:54:45 | 只看该作者
    var 十六数,长度,d7,d6,d5,d4,d3,d2,d1,d0,d,len
    arraysp.size(十六数,长度)
    for(j=0;j<长度;j++)
        if(十六数[j]!=0)
            select(十六数[j])
                case 0:
                d0=十六数[0]
                case 1:
                d1=十六数[1]
                d0=d1 & 十六数[0]
                case 2:
                d2=十六数[2]
                d1=d2 & 十六数[1]
                d0=d1 & 十六数[0]
                case 3:
                d3=十六数[3]
                d2=d3 & 十六数[2]
                d1=d2 & 十六数[1]
                d0=d1 & 十六数[0]
                case 4:
                d4=十六数[4]
                d3=d4 & 十六数[3]
                d2=d3 & 十六数[2]
                d1=d2 & 十六数[1]
                d0=d1 & 十六数[0]
                case 5:
                d5=十六数[5]
                d4=d5 & 十六数[4]
                d3=d4 & 十六数[3]
                d2=d3 & 十六数[2]
                d1=d2 & 十六数[1]
                d0=d1 & 十六数[0]
                case 6:
                d6=十六数[6]
                d5=d6 & 十六数[5]
                d4=d5 & 十六数[4]
                d3=d4 & 十六数[3]
                d2=d3 & 十六数[2]
                d1=d2 & 十六数[1]
                d0=d1 & 十六数[0]
                case 7:
                d7=十六数[7]
                d6=d7 & 十六数[6]
                d5=d6 & 十六数[5]
                d4=d5 & 十六数[4]
                d3=d4 & 十六数[3]
                d2=d3 & 十六数[2]
                d1=d2 & 十六数[1]
                d0=d1 & 十六数[0]
                default:
            endselect
        endif
    endfor



还能有更简单的,不是自己写的东西不明用意,有点蛋疼,需要思考下
回复 支持 反对

使用道具 举报

地板
发表于 2014-11-7 17:20:10 | 只看该作者
本帖最后由 610761555 于 2014-11-7 17:26 编辑
  1.     var 十六数=array[8],长度,d=array[8],temp
  2.     arraysp.size(十六数,长度)
  3.     for(j=0;j<长度;j++)
  4.         十六数[j]=j
  5.         d[j]= j
  6.         if(j>0&&十六数[j]!=0)
  7.             d[j]=十六数[j]
  8.             traceprint("d" & j & "=" & d[j])
  9.             for(x=0;x<j;x++)
  10.                 temp = d[x]
  11.                 d[x] = d[x+1] & "," & 十六数[x]
  12.                 traceprint("d" & x & "=" & d[x])
  13.                 d[x] = temp
  14.             endfor
  15.             traceprint("------------------")
  16.         endif
  17.     endfor
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2014-11-7 20:03:31 | 只看该作者

谢谢帮忙, 我试了下, 对不上, 我这个代码是10进制转成16进制的 功能代码的下半部分, 上半部分是往数组里存放数据, 下半部分是从数组中取出数据,并正常排列成16进制. 存的时候是正常顺序,但是取出数据的时候是反顺序取出数据才能正常排列, 或者正常顺序取出后加一个倒序的方法也是可以.  我把代码简化了一下, 能再帮我看一下吗,   
  1.         d         
  2.         if(十六数[7]!=0)
  3.             d=十六数[7]&十六数[6]&十六数[5]&十六数[4]&十六数[3]&十六数[2]&十六数[1]&十六数[0]
  4.         else
  5.             if(十六数[6]!=0)
  6.                 d=十六数[6]&十六数[5]&十六数[4]&十六数[3]&十六数[2]&十六数[1]&十六数[0]
  7.             else
  8.                 if(十六数[5]!=0)
  9.                     d=十六数[5]&十六数[4]&十六数[3]&十六数[2]&十六数[1]&十六数[0]
  10.                 else
  11.                     if(十六数[4]!=0)
  12.                         十六数[4]&十六数[3]&十六数[2]&十六数[1]&十六数[0]
  13.                     else
  14.                         if(十六数[3]!=0)
  15.                         d=十六数[3]&十六数[2]&十六数[1]&十六数[0]              
  16.                         else
  17.                             if(十六数[2]!=0)
  18.                                 d=十六数[2]&十六数[1]&十六数[0]                 
  19.                             else
  20.                                 if(十六数[1]!=0)
  21.                                     d=十六数[1]&十六数[0]
  22.                                 else
  23.                                     if(十六数[0]!=0)
  24.                                         d0=十六数[0]
  25.                                     endif
  26.                                 endif
  27.                             endif
  28.                         endif
  29.                     endif
  30.                 endif
  31.             endif
  32.         endif
复制代码
回复 支持 反对

使用道具 举报

6#
发表于 2014-11-8 17:36:47 | 只看该作者
针对你第二段代码

  1. 变量 d=数组[7]
  2. d[0]=d0,d[1]=d1,d[2]=d2,d[3]=d4,d[4]=d4,d[5]=d5,d[6]=d6,d[7]=d7,

  3. for(i=7;i<0;i--)
  4.     if(十六数[i]!=0)
  5.         d[i]=十六数[i]
  6.         for(ii=i-1;i<0;i--)
  7.             d[ii]=字符串.连接(d[ii+1],十六数[ii])
  8.         endfor
  9.         跳出
  10.     endif
  11. endfor
复制代码
回复 支持 反对

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18043773号

GMT+8, 2025-9-24 12:27 , Processed in 0.201395 second(s), 24 queries .

Powered by 海安天坑软件科技有限公司

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表