定义a为双精度数组,dim a() as double,数组长度为3,(其实a存储的就是一个三维向量)。
a中的元素有如下三种类型:
第一种:假定a={"-1", "0", "0"}或者a={"0", "1", "0"},就是说,a中的元素有两个0,一个1或-1;
第二种:假定a={"0.12", "0.98", "0"}或者a={"0", "0.47", "1.38"},就是说,a中除了有一个0外,另外两个数不为1(或者-1)也不为0;
第三种:假定a={"1", "-2.31", "0"}或者a={"-1", "0.15", "0"},a中除了0和1(或者-1),另外一个数不为0和1(或者-1);我的目的是:碰到第一种和第二种情况,对a不做改动;
碰到第三种情况,就将a中的那个不为0和1(或者-1)的数字,改为0。例如针对第三种情况的两个a,就改成:
a={"1", "0", "0"}和a={"-1", "0", "0"},就是将“-2.31”和“0.15”都改成0,然后返回新的a值。
麻烦各位帮帮忙了!谢谢!

解决方案 »

  1.   

    for i=0 to ubound(a)
    if a(i)<>0 and a(i)<>1 and a(i)<>-1 then
    a(i)=0
    endif
    next
    就是单纯的一些判断而已啊
      

  2.   


    Private Sub Command1_Click()   Dim a(2) As Double
       a(0) = 0: a(1) = 1: a(2) = 0
       yz a
       For i = 0 To 2
           Debug.Print a(i);
       Next
       Debug.Print
       
       a(0) = 0.12: a(1) = 0.98: a(2) = 0
       yz a
       For i = 0 To 2
           Debug.Print a(i);
       Next
       Debug.Print   a(0) = 1: a(1) = -2.31: a(2) = 0
       yz a
       For i = 0 To 2
           Debug.Print a(i);
       Next
       Debug.PrintEnd SubPrivate Sub yz(a() As Double)
        Dim i As Byte, L As Byte, NL As Byte
        For i = 0 To 2
            If a(i) = 0 Then L = L + 1
            If a(i) <> -1 And a(i) <> 1 And a(i) <> 0 Then NL = NL + 1
        Next
        If L = 1 And NL = 1 Then
           For i = 0 To 2
               If a(i) <> 0 And a(i) <> 1 And a(i) <> -1 Then a(i) = 0
           Next
        End IfEnd Sub
      

  3.   

    回复二楼chinaboyzyq:我要的结果应该是如下所示:
            Dim a1 As Double() = {"-1", "0", "0"}不做改变
            Dim a2 As Double() = {"0", "1", "0"}不做改变
            Dim a3 As Double() = {"0.12", "0.98", "0"}不做改变
            Dim a4 As Double() = {"0", "0.47", "1.38"}不做改变
            Dim a5 As Double() = {"1", "-2.31", "0"}变为{"1", "-0", "0"}
            Dim a6 As Double() = {"-1", "0.15", "0"}变为{"-1", "0", "0"}
    但是你的程序结果是:
            Dim a1 As Double() = {"-1", "0", "0"}达到要求
            Dim a2 As Double() = {"0", "1", "0"}达到要求
            Dim a3 As Double() = {"0.12", "0.98", "0"}达到要求
            Dim a4 As Double() = {"0", "0.47", "1.38"}应该不变的,但是你的结果却变成了{"0","0","0"}
            Dim a5 As Double() = {"1", "-2.31", "0"}应该变为{"1", "-0", "0"},但你的结果是{"1","0","0"}

            Dim a6 As Double() = {"-1", "0.15", "0"}达到要求。
    你的程序没能实现我想要的结果哦!谢谢!