注册 登录
编程论坛 VB6论坛

在VB语言中如何采用数组的形势编写出来?

sr88csg 发布于 2016-01-07 14:37, 3644 次点击
                      基准直径DB

             0-12      12-25    25-50   50-100  100-200  200-400   大于400   
模数m  0-5     80         90      100      110      120     125      140
       5-10    72         80      88        98       109     125       135
      10-15     64        72      80        88      100      112       126
      大于15    56       53       40       44       88        98       112

假如我知道 基准直径DB=27,模数m=8  就可以查出  齿宽AE=88并输出来。
这样的程序怎么写呢?求高手指教。本人菜鸟。
23 回复
#2
wp2319572016-01-07 14:48
c语言呢  vb呢   要是vb的  我帮你转走
#3
sr88csg2016-01-07 14:53
采用VB语言编写
#4
rjsp2016-01-07 14:56
就是一个简单的二维数组嘛
所在行 = GetRow( 模数 )
所在列 = GetCol( 直径 )
return 二维数组[行][列]

我奇怪的是 “0-12      12-25”,12算在0-12中,还是在12-25中?
#5
sr88csg2016-01-07 15:01
大于0小于等于12,大于12的小于等于25。10几年没有搞过这些了。以前也只自学了一点皮毛。群主能帮我编仔细点么。
#6
sr88csg2016-01-07 15:05
还有4维数组和二维数组是一样的吗。我上面只写了一些简单的数字。实际上是知道基准直径,模数,精度等级,偏差系列查找数据
#7
sr88csg2016-01-07 15:31
回复 4楼 rjsp
谢谢楼主。
#8
sr88csg2016-01-07 15:43

   想先用这种格式写入程序中
 {80,90, 100, 110, 120 ,125,140}
    {72,80,88,98,109 ,125,135}
  { 64,72, 80,88,100,112,126}
    {56,53,40,44,88,98,112}
再根据条件赋值。怎么写呢? 如何定义?
#9
wp2319572016-01-07 15:46
以下是引用sr88csg在2016-1-7 15:31:45的发言:

谢谢楼主。



你到底在谢谢谁
#10
sr88csg2016-01-07 16:11
发错了,是谢谢群主
#11
sr88csg2016-01-07 16:12
又错了,谢谢版主
#12
sr88csg2016-01-07 16:14
谢谢4楼的高手
#13
sr88csg2016-01-07 16:15
谢谢4楼的高手
#14
sr88csg2016-01-08 11:12
竟然没人知道我,只怪我太差了。自己搞去
#15
sr88csg2016-01-08 14:09
Private Sub Command1_Click()

Dim i, j, k As Integer
Dim DB, m As Double
DB = Val(Text1.Text)
m = Val(Text2.Text)


 Dim d
 d = Array(Array(1, 2, 3, 4, 5, 6, 7, 8), Array(9, 10, 11, 12, 13, 14, 15, 16, 17, 18), Array(19, 20, 21, 22, 23, 24, 25, 26))
  
 
 If DB <= 12 Then
   i = 0
   ElseIf DB > 12 And DB <= 25 Then
   i = 1
   ElseIf DB > 25 And DB <= 50 Then
   i = 2
   ElseIf DB > 25 And DB <= 50 Then
   i = 3
   ElseIf DB > 50 And DB <= 100 Then
   i = 4
   ElseIf DB > 100 And DB <= 200 Then
   i = 5
   ElseIf DB > 200 And DB <= 400 Then
   i = 6
   Else: i = 7
   End If
     
If m <= 1.5 Then
   j = 0
ElseIf m > 1.5 And m <= 4 Then
   j = 1
Else
   j = 2
End If
 
 


 Print d(j)(i)

 End Sub

#16
sr88csg2016-01-08 14:10
终于自己搞定了,现在就是要写三维的。
#17
sr88csg2016-01-08 14:29
只有本站会员才能查看附件,请 登录
     我现在的问题是,已知,DB,m,偏差等级  同时满足三个条件才能选到需要的数据。程序怎么编写呢?
#18
sr88csg2016-01-08 14:30
求求高手指教
#19
sr88csg2016-01-08 16:02

 Dim d
 d = Array(Array(200, 180, 160, 140, 125, 110, 100, 90, 80), Array(180, 162, 144, 126, 112, 99, 90, 81, 72), Array(160, 144, 128, 112, 100, 88, 80, 72, 64), Array(140, 126, 112, 98, 88, 77, 70, 63, 56), Array(120, 108, 96, 84, 75, 66, 60, 54, 48), Array(100, 90, 80, 70, 62, 55, 50, 45, 40), Array(80, 72, 64, 56, 50, 44, 40, 36, 32), Array(60, 54, 48, 42, 37, 33, 30, 27, 24), Array(40, 36, 32, 28, 25, 22, 20, 18, 16), Array(20, 18, 16, 14, 12, 11, 10, 9, 8), Array(0, 0, 0, 0, 0, 0, 0, 0, 0), Array(-20, -18, -16, -14, -12, -11, -10, -9, -8), Array(-40, -36, -32, -28, -25, -22, -20, -18, -16), Array(-60, -54, -48, -42, -37, -33, -30, -27, -24), Array(-80, -72, -64, -56, -50, -44, -40, -36, -32), Array(-120, -108, -96, -84, -75, -66, -60, -54, -48), Array(-160, -144, -128, -112, -100, -88, -80, -72, -64), Array(-200, -180, -160, -140, -125, -110, -100, -90, -80))

  If m < 1.5 Then
       If DB <= 12 Then
       i = 8
       ElseIf DB > 12 And DB <= 25 Then
       i = 7
       ElseIf DB > 25 And DB <= 50 Then
       i = 6
       ElseIf DB > 50 And DB <= 100 Then
       i = 5
       ElseIf DB > 100 And DB <= 200 Then
       i = 4
       ElseIf DB > 200 And DB <= 400 Then
       i = 3
       Else: i = 2
       End If
 ElseIf m > 1.5 And m <= 4 Then
       If DB <= 12 Then
       i = 7
       ElseIf DB > 12 And DB <= 25 Then
       i = 6
       ElseIf DB > 25 And DB <= 50 Then
       i = 5
       ElseIf DB > 50 And DB <= 100 Then
       i = 4
       ElseIf DB > 100 And DB <= 200 Then
       i = 3
       ElseIf DB > 200 And DB <= 400 Then
       i = 2
       Else: i = 1
       End If
 Else
      
       If DB <= 12 Then
       i = 6
       ElseIf DB > 12 And DB <= 25 Then
       i = 5
       ElseIf DB > 25 And DB <= 50 Then
       i = 4
       ElseIf DB > 50 And DB <= 100 Then
       i = 3
       ElseIf DB > 100 And DB <= 200 Then
       i = 2
       ElseIf DB > 200 And DB <= 400 Then
       i = 1
       Else: i = 0
       End If
  End If
  
  
  If Pc = "v" Then
  j = 0
  ElseIf Pc = "u" Then
  j = 1
  ElseIf Pc = "t" Then
  j = 2
  ElseIf Pc = "s" Then
  j = 3
  ElseIf Pc = "r" Then
  j = 4
  ElseIf Pc = "p" Then
  j = 5
  ElseIf Pc = "n" Then
  j = 6
  ElseIf Pc = "m" Then
  j = 7
  ElseIf Pc = "k" Then
  j = 8
  ElseIf Pc = "j" Then
  j = 9
  ElseIf Pc = "h" Then
  j = 10
  ElseIf Pc = "g" Then
  j = 11
  ElseIf Pc = "f" Then
  j = 12
  ElseIf Pc = "e" Then
  j = 13
  ElseIf Pc = "d" Then
  j = 14
  ElseIf Pc = "c" Then
  j = 15
  ElseIf Pc = "b" Then
  j = 16
  Else: j = 17
  End If
  
 Print d(j)(i)

 End Sub
#20
sr88csg2016-01-08 16:03
哪里错误了呢,怎么查出来的全是最后一组的数据?
#21
风吹过b2016-01-08 22:21
那你检查 判断出来的 数组下标。
使用 监视,j 的值。

有一种情况,就是Pc变量中保存的不是一个字母。

Pc 的字母是连续的,可以直接计算,而不是使用IF块进行判断。
j=114-asc(pc)  '在手机上,估算的值
然后判断一下j是否大于0
if j<0 then  j =0
#22
hl23888179422016-01-11 22:25
求VB挂轮比代码
比如,text1.text,是个double,比如是0.8745865231,求(A/B)*(C/D),A,B,C,D均是30到100的整数,要求输出(A/B)*(C/D)最接近text1.text里的数值,然后输出一个(A/B)*(C/D)

比如最终输出52/68*86/61

谢谢大侠
#23
风吹过b2016-01-12 21:22
(51/55)*(83/88)=.874586776859504

Dim a As Long, b As Long, c As Long, d As Long
Dim m As Double, n As Double
Dim k As Double

Dim a1 As Long, b1 As Long, c1 As Long, d1 As Long
Dim m1 As Double


k = 1
For a = 30 To 100
For b = 30 To 100
For c = 30 To 100
For d = 30 To 100
m = (a / b) * (c / d)
n = Abs(m - 0.8745865231)
If n < k Then
    k = n
    a1 = a
    b1 = b
    c1 = c
    d1 = d
    m1 = m
End If
Next d
Next c
Next b
Next a

Print "("; a1; "/"; b1; ")*("; c1; "/"; d1; ")="; m1
Debug.Print "(" & a1 & "/" & b1 & ")*(" & c1 & "/" & d1 & ")=" & m1

#24
csl5912016-02-14 09:10
用数组和循环。
1