回 帖 发 新 帖 刷新版面

主题:[原创]QB转植为VB(水泥配比)[求助]

希望哪位有兴趣的大大.可以帮助解决一下
   谢谢咯!
     谁搞定我请谁吃饭。哈哈!
  麻烦你们了
程序在下面...水泥生料配料比的数学模型算法
   我的QQ:53741170
 谢谢大伙咯!
[em2][em2][em5]
DECLARE SUB waitin (I$)
DECLARE SUB lcpr (I, J, I$)
10 CLEAR : OPEN "DATA" FOR RANDOM AS #2 LEN = 10 : FIELD #2, 10 AS FIL$
    FOR I = 1 TO 8
        FOR J =1 TO 8
        P(I, J) = 0
    NEXT J, I
    FOR I =1 TO 8 
        P(I, I) = 1E+12
    FOR J = 1 TO 8
        LSET FIL$ = MKS$(P(I, J))
        CODE% = 10 * (I - 1) + J
        PUT #2, CODE%
    NEXT J,I
    FOR I = 1 TO 8
        LSET FIL$ = MKS$(P7(I))
    CODE% = 80 + I
    PUT #2, CODE%
    CODE% = 90 + I
    PUT #2, CODE%
    NEXT
50 FOR I = 1 TO 8
        P(I, I) = .0001
    FOR J =1 TO 8
        CODE% = 10 * I + J + 90
60         LSET FIL$ = MKS$(P(I, J))
            PUT #2, CODE%
    NEXT J, I
    CLOSE #2

    DIM SPACE(30)
    DIM J(20)
    DIM G1(16)
    DIM G(16,16)
    DIM xx(200),xxx(200)
    SCREEN 2, 0: KEY OFF
    DEF FNLEND$ (D) = LEFT$(STR$(D),6)
    LINE (0, 0)-(54, 14), 1, BF
    GET (0, 0)-(46, 14), xx
    GET (0, 0)-(54, 14), xxx
30 CLS : OPEN "CAL1" FOR RANDOM AS #2 LEN = 10: FIELD #2,10 AS FIL$
    A = 11
    J(10) = 0: J(11) = 0: J(12) = 0: J(13) = 0: J(14) = 0: J(15) = 0
40 lcpr 3, 4, "1. ............."
    LOCATE 5, 8: PRINT TAB(8); "A"; TAB(13); "Qc"; TAB(19); "Qc' "; TAB(25); "Q1";
    PRINT TAB(31); "KH"; TAB(38); "N"; TAB(44); "P"
    FOR I = 1 TO 7
      CODE% = 20 + I: GET #2, CODE%: B(1, I) = VAL(FIL$): lcpr 7, 6 * I, FIL$
    NEXT
    FOR I = 0 TO 6
      LINE (35 + 48 * I, 27)-(83 + 48 * I, 59), , B
    NEXT
    LINE (35, 43)-(371, 43)
    lcpr 11, 4, "2. ............."
    LOCATE 13, 5: PRINT TAB(13); "Loss"; TAB(19); "CaO"; TAB(25); "SiO2"; TAB(39); "Al2O3";
    PRINT TAB(36); "Fe2O3"; TAB(43); "MgO"; TAB(49); "Else"
    lcpr 15, 6, "Limes"
    lcpr 17, 6, "Clay"
    lcpr 21, 6, "Coala"
    lcpr 19, 6, "Irons"
    FOR I = 1 TO 4
      FOR J = 1 TO 7
        CODE% = 20 + 10 * I + J
    GET #2, CODE%
        E(I, J) = VAL(FIL$)
        LOCATE 13 + 2 * I, 6 + 6 * J
        PRINT USING "##.##"; E(I, J)
      NEXT J, I
      FOR I = 0 TO 7
        LINE (35 + 48 * I, 91)-(83 + 48 * I,171), , B
      NEXT
      FOR I = 1 TO 4
        LINE (35, 91 + 16 * I)-(419, 91 + 16 * I), , B
      NEXT
      LINE (429, 27)-(635, 61), , B
      LINE (428, 26)-(636, 62), , B
      lcpr 5, 57, "ORIGINAL DATA"
      lcpr 6, 57, "SATISFIED(Y/N)?"
200 comm$ = "": waitin I$
      SELECT CASE I$
        CASE "Y"
          I$ = "": GOTO 760
        CASE "N"
          I$ = ""
         LINE (428, 26)-(636, 84), 0, BF
         LINE (429, 27)-(635, 83), , B
         LINE (428, 26)-(636, 84), , B
         lcpr 5, 57, "EXCHANGE DATA"
         lcpr 6, 57, "PLEASE CHOOSE..."
         lcpr 7, 57, "<PAGE UP>: COLUMN 1 "
         lcpr 8, 57, "<PAGE DOWN>: COLUMN 2 "
         lcpr 9, 57, "<END>: CALCULATE"
         lcpr 21, 57, "EXCHANGE:"
         LINE (451, 171)-(499, 187), , B
         LINE (450, 170)-(500, 188), , B
       CASE ELSE
         I$ = "": BEEP: GOTO 200
      END SELECT
290 waitin I$
      SELECT CASE I$
        CASE CHR$(0) + CHR(73)
291      I = 1: I$ = "": GOSUB 730: GOTO 330
        CASE CHR$(0) + CHR(81)
295      I = 1: J = 1: 1$ = "": GOSUB 730: GOTO 500
        CASE CHR$(0) + CHR(79)
300      I$ = "": GOTO 740
        CASE ELSE
      I$ = "": BEEP: GOTO 290
      END SELECT
330 PUT (48 * I -12, 44), xx
340 waitin I$
      SELECT CASE I$
      CASE CHR$(0) + CHR$(79)
        PUT (48 * I -12, 44), xx: GOTO 300
      CASE CHR$(0) + CHR$(81)
        PUT (48 * I -12, 44), xx: GOTO 295
      CASE CHR$(0) + CHR$(75)
        I$ = "": GOSUB 730: GOTO 430
      CASE CHR$(0) + CHR$(77)
        I$ = "": GOSUB 730: GOTO 450
      CASE CHR$(13)
        I$ = "": GOTO 470
      CASE CHR$(46)
        GOTO 421
      CASE CHR$(48) TO CHR$(57)
        GOTO 421
      CASE CHR$(0) + CHR$(83)
        GOTO 415
      CASE CHR$(8)
        GOTO 415
     CASE ELSE
       BEEP: I$ = "": GOTO 340
     END SELECT
451 IF LEN(comm$) < 1 THEN BEEP: GOTO 340
      comm$ = LEFT$(comm$,LEN(comm$) - 1)
      lcpr 23, 58, SPACE$(5)
      lcpr 23, 58, comm$: GOTO 340
421 IF LEN(comm$) > 4 THEN
         GOTO 340
      ELSE
         comm$ = comm$ + I$
     lcpr 23, 58, comm$
     GOTO 340
      END IF
430 IF I = 1 THEN BEEP: GOTO 340
      PUT (-12 + 48 * I ,44), xx
      I = I - 1: GOTO 330
450 IF I = 7 THEN BEEP: GOTO 340
      PUT (-12 + 48 * I ,44), xx
      I = I + 1: GOTO 330
470  lcpr 23, 58, SPACE$(5): lcpr 23, 58, "?": IF comm$ = "" THEN BEEP: GOTO 340
480  lcpr 7, 6 * I, SPACE$(5)
       PUT (-12 + 48 * I, 44), xx
         lcpr 7, 6 * I, SPACE$(5)
           lcpr 7, 6 * I, comm$
        PUT (-12 + 48 * I, 44), xx
       LSET FIL$ = comm$
         CODE% = 20 + I
        PUT #2, CODE%
       B(1, I) = VAL(FIL$)
       comm$ = "": GOTO 340
500  PUT (36 + 48 * I, 92 + 16 * J), xx
510  waitin I$
       SELECT CASE I$
       CASE CHR$(0) + CHR$(79)
         PUT (36+ 48 * I, 92 + 16 * J), xx
     GOTO 300
       CASE CHR$(0) + CHR$(73)
         PUT (36+ 48 * I, 92 + 16 * J), xx
     GOTO 291
       CASE CHR$(0) + CHR$(75)
         I$ = "": GOSUB 730: GOTO 620
       CASE CHR$(0) + CHR$(77)
         I$ = "": GOSUB 730: GOTO 640
       CASE CHR$(0) + CHR$(72)
         I$ = "": GOSUB 730: GOTO 660
       CASE CHR$(0) + CHR$(80)
         I$ = "": GOSUB 730: GOTO 680
       CASE CHR$(13)
         I$ = "": GOTO 700
       CASE CHR$(46)
         GOTO 521
       CASE CHR$(48) TO CHR$(57)
         GOTO 521
       CASE CHR$(0) + CHR$(83)
         GOTO 515
       CASE CHR$(8)
         GOTO 515
       CASE ELSE
         BEEP: I$ = "": GOTO 510
       END SELECT
515  IF LEN(comm$) < 1 THEN BEEP: GOTO 510
       comm$ = LEFT$(comm$,LEN(comm$) -1 )
       lcpr 23, 58, SPACE$(5)
       lcpr 23, 58, comm$: GOTO 510
521  IF LEN(comm$) > 4 THEN 
          GOTO 510
      ELSE
           comm$ = comm$ + I$
           lcpr 23, 58, comm$
           GOTO 510
      END IF
620  IF I =  1 THEN BEEP: GOTO 510
      PUT (36 + 48 * I, 92 + 16 * J), xx
      I = I - 1: GOTO 500
640  IF I =  7 THEN BEEP: GOTO 510
      PUT (36 + 48 * I, 92 + 16 * J), xx
      I = I + 1: GOTO 500
660  IF J =  1 THEN BEEP: GOTO 510
      PUT (36 + 48 * I, 92 + 16 * J), xx
      J = J - 1: GOTO 500
680  IF J =  4 THEN BEEP: GOTO 510
      PUT (36 + 48 * I, 92 + 16 * J), xx
      J = J + 1: GOTO 500
700  lcpr 23, 58, SPACE$(5): lcpr 23, 58, "?"
       IF comm$ = "" THEN BEEP: GOTO 510
       GOSUB 720
705  PUT (36 + 48 * I, 92 + 16 * J), xx
       LOCATE 13 + 2 * J, 6+ 6 * I
       PRINT USING "##.##"; E(J, I)
       PUT (36 + 48 * I, 92 + 16 * J), xx
       comm$ = "": GOTO 510
720  IF VAL(comm$) >= 100 THEN BEEP: GOSUB 730: GOTO 510
       lcpr 13 + 2 * J, 6+ 6 * I, SPACE$(5)
       comm$ = LEFT$(comm$,5)
       LSET FIL$ = comm$: CODE% = 20 + 10 * J + I: PUT #2, CODE%
       E(J, I) = CINT(VAL(comm$) * 100) / 100
       RETURN
730  lcpr 23, 58, SPACE$(5): lcpr 23, 58, "?"
       comm$ = "": LINE (451, 171)-(499,187), , B
       LINE (450, 170)-(500, 188), , B
       RETURN
740  FOR I = 1 TO 4: lcpr 20 + I, 57, SPACE$(10): NEXT I
       LINE (429, 27)-(635, 83), 0, BF
       LINE (428, 26)-(636, 84), 0, BF
760  LINE (429, 27)-(635, 61), , B
       LINE (428, 26)-(636, 62), , B
       lcpr 5, 57, SPACE$(22): lcpr 6, 57, SPACE$(22)
       LOCATE 5, 57: PRINT "CALCULATION"
770  IF M = 0 THEN LOCATE 6, 57: INPUT "INPUT M="; M: ' J(0) = 0: J(10) = 0
1150  ' CALCULATION
        FOR I = 1 TO 8
        FOR J = 1 TO 9
            H(I, J) = 0
        NEXT J, I
    FOR I = 1 TO 4
        FOR J = 1 TO 4
            H(J, I) = E(I, J + 1)
        H(I, 4 + I) = -100
    NEXT J, I
1170  FOR I = 1 TO 4
            H(5, I) = (100 - E(I, 1)) / 100
    NEXT
1185  FOR I = 1 TO 5
            H(I, 4) = H(I, 4) * B(1, 1) / 100
    NEXT
1180  H(6, 5) = 1: H(6, 6) = -2.8 * B(1, 5): H(6, 7) = -1.65: H(6, 8) = -.35
1190                  H(7, 6) = 1:           H(7, 7) = 0 - B(1, 6): H(7, 8) = H(7, 7)
                                                          H(8, 7) = 1:      H(8, 8) = 0 - B(1, 7)
        H(9, 4) = 1
1160  ZL(5) = 100
        ZL(9) = 100 * B(1, 3) / B(1, 2)
1200  OPEN “DATA” FOR RANDOM AS #3 LEN = 10: FIELD #3, 10 AS DAT$
1210  FOR I = 1 TO 8
            FOR J = 1 TO 8
            CODE% = 10 * (I - 1) + J
        GET #3, CODE%
        P1(I, J) = CVS(DAT$)
        NEXT J, I
1230  FOR I = 1 TO 8
            CODE% = 90 + I
        GET #3, CODE%
        D2(I) = CVS(DAT$)
    NEXT
1240  FOR L = 1 TO 9
            FOR I = 1 TO 8
            K(I) = 0
        FOR J = 1 TO 8
            K(I) = K(I) + P1(I, J) * H(L, J)
            NEXT J, I
        C = 0
        FOR I = 1 TO 8
            C = C + H(L, I) * K(I)
        NEXT I
        C = C + 1
        IF C = 0 THEN 1700
1280      FOR I = 1 TO 8
                K(I) = K(I) / C
        FOR J = 1 TO 8
            P2(I, J) = 0 - K(I) * H(L, J)
            P3(I, J) = 0
        NEXT J

回复列表 (共6个回复)

沙发

jx355101 你好
你把你的程序写正确再来帮你转为vb

比如
¥   是否是 $
LSEP FIL$ = MKS$(P(I, J))   是否是 LSET FIL$ = MKS$(P(I, J))
CODE% 20 + 10 * I + J   是否是 CODE% = 20 + 10 * I + J 
CASE CHR$(0) + CHR(81)   是否是 CASE CHR$(0) + CHR$(81)
1$ = "" 是否是 I$ = ""
DIM xxx(200),xxx(200)  是否是 DIM xxx(200),xx(200)

错误太多了,你先改改吧!!!!!!!!!!
你先在QB中搞可以运转,现在语法都通不过

板凳

请楼主把主要的功能段注释出来

以前我用GWBASIC写过, 现在早记不清了, 大概是已知各原料成分, 再根据给定的KH值计算出各原料的配比.

3 楼

谢谢上面两位的帮助!
    我先把程序修改完整!
  希望你们继续支持,谢谢你们!
[em2][em2][em2]

4 楼

程序已经作了修改了```
  大伙帮帮看哦!``呵呵```

5 楼


有错误啊,你把文件粘贴上来,不要打字!!!!

6 楼

LSet FIL$ = Str(P7(I))
这个 P7 是什么


'   1. .............
'
'       A    Qc    Qc'   Q1    KH     N     P            ORIGINAL DATA
'                                                        SATISFIED(Y/N)?
'
'
'
'
'   2. .............
'
'            Loss  CaO   SiO2  Al2O3 Fe2O3 MgO   Else
'
'     Limes
'
'     Clay
'
'     Irons
'
'     Coala
'
'
'
'Press any key to continue

       A    Qc    Qc'   Q1    KH     N     P   这一排是什么

CaO氧化钙     SiO2二氧化硅    Al2O3三氧化二铝    Fe2O3三氧化二铁    MgO氧化镁
Loss
Else
Limes
这三个是什么啊

我来回复

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