回 帖 发 新 帖 刷新版面

主题:各位高手,妹妹在此求救,

各位大哥哥,小妹求救

各位大虾高手们,小妹在这跪地求救:我是一家纺织企业的车间主任,我们车间有一种设备,其工艺参数是由数十种齿轮搭配来完成的,但是说明书上给出的齿轮参数很粗略,不细致,所以我在工作之余又想起多年前学过的QB语言好像能解决此问题,但是经过几天的思考,还是不能解决此问题,所以还请各位高手指点迷津。 
我们的设备需要三种主要工艺参数:即J(卷绕);N(捻度);Q(牵伸),且三个参数都有各自的公式:J =1.06*A*C/B/D;N=30980*B/a/C;Q=2.52*B*D/A/C;其中A,B ,C,D,是由以下齿轮数任意组合而成,也可以重复。齿轮大小如下:24,26,28,30,33,36,38,40,44,47,48,50,52,54,55,56,59,60,62。 
其中需要注意的是:J是一个小数,而且其精确度最少要在小数点后三位,N必需是一个整数,若算出的数后有小数,要经过四舍五入后取整。Q是一个大于1且后有小数,精确度要最少两位小数。 
例如:我想算这三个数:J=0。925,N=425,Q=2。82,但是我不知道有几种齿轮搭配方案,想通过QB算出。我用计算器得知此齿轮组可以满足以上条件:J=1。06*48*40/40/55=0。9250909取三位小数后正好是0.925,n=30980*40/54/54=424.965,取整后正好是425;q=2.52*50*50/36/62=2.8225取小数后两位正好是2。82,我想肯定还有其它的齿轮搭配方案,所以想通过电脑一次求出相近的齿轮搭配方案。我简单的编了一个但是连一个简单的公式也算不出,请各位高手帮忙: 

CLS ' 
DIM a(16) 
a(0) = 24 
a(1) = 28 
a(2) = 33 
a(3) = 36 
a(4) = 38 
a(5) = 40 
a(6) = 44 
a(7) = 47 
a(8) = 48 
a(9) = 50 
a(10) = 52 
a(11) = 54 
a(12) = 55 
a(13) = 56 
a(14) = 59 
a(15) = 60 
a(16) = 62 
DIM b(16) 
b(0) = 24 
b(1) = 28 
b(2) = 33 
b(3) = 36 
b(4) = 38 
b(5) = 40 
b(6) = 44 
b(7) = 47 
b(8) = 48 
b(9) = 50 
b(10) = 52 
b(11) = 54 
b(12) = 55 
b(13) = 56 
b(14) = 59 
b(15) = 60 
b(16) = 62 
DIM c(16) 
c(0) = 24 
c(1) = 28 
c(2) = 33 
c(3) = 36 
c(4) = 38 
c(5) = 40 
c(6) = 44 
c(7) = 47 
c(8) = 48 
c(9) = 50 
c(10) = 52 
c(11) = 54 
c(12) = 55 
c(13) = 56 
c(14) = 59 
c(15) = 60 
c(16) = 62 
INPUT "nian:"; nian 
FOR i = 0 TO 16 
FOR j = 16 TO 0 STEP -1 
FOR k = 0 TO 16 
du = 30980 * b(j) / a(i) / c(k) 
IF INT(du) = nian THEN 
PRINT a(i); b(i); c(i); nian 
ELSE 
PRINT "no::" 
END IF 
NEXT k 
NEXT j 
NEXT i 
END 
[em4]

回复列表 (共5个回复)

沙发

cls
'input "J,N,Q",J#,N&,Q#
J#=.925
N&=425
Q=2.82
'if J#*N&*Q#=0 then system
x$=string$(4,24)+string$(4,26)+string$(4,28)+string$(4,30)+string$(4,33)+string$(4,36)+string$(4,38)+string$(4,40)+string$(4,44)+string$(4,47)+string$(4,48)+string$(4,50)+string$(4,52)+string$(4,54)+string$(4,55)+string$(4,56)+string$(4,59)+string$(4,60)+string$(4,62)
y$=right$(x$,4)
n$=y$
do     
  m$=n$
  do   
    locate ,1:print m$,       
    '--------------------------------
    A&=asc(mid$(m$,1,1))
    B&=asc(mid$(m$,2,1))
    C&=asc(mid$(m$,3,1))
    D&=asc(mid$(m$,4,1))
    if abs(J#-(1.06#*A&*C&/(B&*D&)))<.001 then
       'if N45&(30980*B&/(A&*C&))=N& then
          'if abs(Q#-(2.52#*B&*D&/(A&*C&)))<.01 then
             print A&,B&,C&,D&
          'endif
       'endif
    endif
    '--------------------------------
    m$=nextpl$(m$)  
  loop until m$=n$  
  n$=nextzh$(x$,n$) 
loop until n$=y$    
system

function nextpl$(a$)
  l=len(a$)
  for e=(l-1) to 1 step -1            
      if mid$(a$,e,1)<mid$(a$,e+1,1) then exit for
  next
  if e>0 then 
     FOR i = l TO (e + 1) STEP -1        
         IF MID$(a$, i, 1) > MID$(a$, e, 1) THEN EXIT FOR
     NEXT
     b$ = MID$(a$, i, 1)               
     MID$(a$, i, 1) = MID$(a$, e, 1)
     MID$(a$, e, 1) = b$
  end if
  FOR i = (e + 1) TO (l + e + 1) \ 2  
      j = l + e + 1 - i
      b$ = MID$(a$, i, 1)
      MID$(a$, i, 1) = MID$(a$, j, 1)
      MID$(a$, j, 1) = b$
  NEXT
  nextpl$=a$
end function 

function nextzh$(a$,b$)
  for i=1 to len(b$)
      if instr(1,a$,mid$(b$,i,1))>i then
         mid$(b$,1,i)=mid$(a$,instr(1,a$,mid$(b$,i,1))-i,i)
         exit for
      endif
  next
  if i>len(b$) then b$=right$(a$,len(b$))
  nextzh$=b$
end function 

function N45&(X#)
Z&=fix(X#)
if X#-Z&<0.5 then N45&=Z& else N45&=Z&+1
end function

板凳

也许是我的领会能力有限,我没有办法理解你的现有条件,以下是我的疑问:
1. 那只是齿轮规格,每种规格的齿轮都有多个。
2. J,N,Q 是不同的工作要求,并非要求某组齿轮同时满足这三个要求。

J=1。06*48*40/40/55=0。9250909
        |
         A ???
          \
n=30980*40/54/54=424.965
            \
             A ???
             |
q=2.52*50*50/36/62=2.8225

3 楼


谢高手,我这两天也没能上网,有点事,看到一楼编的,我其实真的很难看懂,但是我一会试一次试试,我想应该会行的,多谢,我的QQ:76382352,小妹希望能与你们多多探讨

4 楼

MOZ,我不是光算那一个数,我是想算出用那些不同种类的齿轮搭配出这个数来的所有齿轮搭配方案,另一个目的是我随便想算个数,能用电脑一下子算出,每种齿轮的个数是有好几十个,这个不用考虑,
  大哥,你再考虑考虑,我相信你肯定会的,多谢了,
  其实那三个齿轮组不用组合起来,可以单个算,比如你想算出N=425的那个工艺参数,可以单独的编一个程序,

5 楼

[quote]大哥,你再考虑考虑,我相信你肯定会的,多谢了,[/quote]
大姐,你再思考思考,我相信你肯定会明白该怎么改的,不客气了.

我来回复

您尚未登录,请登录后再回复。点此登录或注册