当前位置:编程学习 > VB >>

请教高人懂得B语言的大虾,帮忙翻译一下程序,最好在后边写上注释,感激不尽!

10 REM use path 易做图ysis
20 PRINT "input number m1=? n1=? "
30 INPUT M1,N1
40 LPRINT "m1=";M1,"n1=";N1
50 DIM B(M1,N1+1),A(N1+1,M1)
60 OPEN "a:FA6.TXT" FOR INPUT AS #1
70 FOR I=1 TO M1
80  FOR J=1 TO N1+1
90 INPUT #1,B(I,J)
110 NEXT J
130 NEXT I
140 CLOSE
160 FOR I=1 TO N1+1
170   FOR J=1 TO M1
180 A(I,J)=B(J,I):PRINT A(I,J);
190 NEXT J
200 PRINT
210 NEXT I
220 M=N1:N=M1
230 DIM X(M+1)
240 FOR I=1 TO M+1
250 X(I)=0
260   FOR J=1 TO N
270 X(I)=X(I)+A(I,J)
280 NEXT J
290 X(I)=X(I)/N
300 LPRINT "aver(";I;")=";X(I)
310 NEXT I
320 DIM S(M+1,M+1)
330  FOR I=1 TO M+1
340  FOR J=1 TO M+1
350 S(I,J)=0
360 FOR K=1 TO N
370 S(I,J)=S(I,J)+A(I,K)*A(J,K)
380 NEXT K
390 S(I,J)=S(I,J)-N*X(I)*X(J)
400 PRINT "fal(";I;",";J;")=";S(I,J);
410 NEXT J
420 PRINT
430 NEXT I
440 FOR K=1  TO M+1
450 LPRINT "s";K;"=";SQR(S(K,K)/(N-1))
455  NEXT K
460 REM correlation coefficients
470 DIM Y(M+1,M+1),R(M+1,M+1)
480 FOR I=1 TO M+1
490  FOR  J=1 TO  M+1
500 G=SQR(S(I,I)*S(J,J))
510 R(I,J)=S(I,J)/G
520 LPRINT "r(";I;",";J;")=";R(I,J)
530 Y(I,J)=R(I,J)
540 NEXT J
550 NEXT I
560 FOR I=1 TO M
570  IF R(I,I)<>0 THEN 640
580 FOR K=I+1 TO M
590 IF R(K,I)<>0 THEN 630
600 NEXT K
610 PRINT "no unique solution"
620 GOTO 9999
630 GOSUB 730
640 C=1/R(I,I)
650 GOSUB 790
660 FOR K=1 TO M
670 IF K=I THEN 700
680 C=-R(K,I)
690 GOSUB 830
700 NEXT K
710 NEXT I
720 GOTO 870
730 FOR J=1 TO M+1
740 B=R(I,J)
750 R(I,J)=R(K,J)
760 R(K,J)=B
770 NEXT J
780 RETURN
790 FOR J=1 TO M+1
800 R(I,J)=C*R(I,J)
810 NEXT J
820 RETURN
830 FOR J=1 TO M+1
840 R(K,J)=R(K,J)+C*R(I,J)
850 NEXT J
860 RETURN
870 DIM V(M)
880 REM path coefficients
890 FOR I=1 TO M
900 V(I)=R(I,M+1)
910 LPRINT "p(y.x";I;")=";V(I)
920 NEXT I
930 PRINT
940 REM coefficients of determination
950 DIM U(M)
960 S=0
970 FOR I=1 TO M
980 U(I)=V(I)*V(I)
990 S=S+U(I)
1000 LPRINT "d(y.x";I;")=";U(I)
1010 NEXT I
1020 REM 易做图ysis for degree of determination
1030 LPRINT
1040 B=2
1050 T=0
1060 FOR I=1 TO M-1
1070   FOR J=B TO M
1080 F=2*V(I)*Y(I,J)*V(J)
1090 LPRINT "d(y.x";I;"x";J;")=";F
1100 T=T+F
1110 NEXT J
1120 B=B+1
1130 NEXT I
1140 LPRINT
1150 L=1-(S+T)
1160 LPRINT "dy.e=";L
1170 IF L<=0 THEN 1190
1180 LPRINT "py.e=";SQR(L)
1190 W=0
1200 LPRINT "*****************************************"
1210 FOR I=1 TO M
1220 LPRINT "r(";I;",";J;")=";Y(I,M+1)
1230 FOR J=1 TO M
1240 LPRINT "r(";I;",";J;")*py.x";J;"=";Y(I,J)*V(J)
1250 W=W+Y(I,J)*V(J)
1260 NEXT J
1270 LPRINT "******************************************"
1280 LPRINT "total=";W
1290 W=0
1300 LPRINT "******************************************"
1310 LPRINT
1320 NEXT I
1330 REM regression equation
1340 LPRINT
1350 DIM BB(M)
1355 DIM Z(M+1)
1360 FOR I=1 TO M+1
1370 Z(I)=SQR(S(I,I))
1380 NEXT I
1390 FOR J=1 TO M
1400 BB(J)=V(J)*Z(M+1)/Z(J)
1410 LPRINT "b(";J;")=";BB(J)
1420 NEXT J
1430 D=0
1440 FOR K=1 TO M
1450 D=D+BB(K)*X(K)
1460 NEXT K
1470 D=X(M+1)-D
1480 LPRINT "b(0)=";D;
1490 LPRINT "y=";D
1500 FOR K=1 TO M
1510 LPRINT "+(";BB(K);")*x";K;
1520 NEXT K
1530 LPRINT
1540 REM gauss multilies
1550 DIM C(M,M),Q(M,N+1),H(M,M)
1560 FOR Z1=1 TO M
1570 FOR  Z2=1 TO M
1580 IF Z1=Z2 THEN 1610
1590   C(Z1,Z2)=0
1600 GOTO 1620
1610 C(Z1,Z2)=1
1620 NEXT Z2
1630 PRINT
1640 NEXT Z1
1650 PRINT
1660 FOR Z=1 TO M
1670 FOR I=1 TO M
1680 FOR J=1 TO M
1690 Q(I,J)=Y(I,J)
1700 NEXT J
1710 Q(I,M+1)=C(Z,I)
1720 NEXT I
1730 FOR J=1 TO M
1740 FOR I=J TO M
1750 IF Q(I,J)<>0 THEN 1790
1760 NEXT I
1770 LPRINT  "no unioue solution"
1780 GOTO 9999
1790 FOR K=J TO M+1
1800 B=Q(J,K)
1810 Q(J,K)=Q(I,K)
1820 Q(I,K)=B
1830 NEXT K
1840 C=1/Q(J,J)
1850 FOR  I=J TO M+1
1860 Q(J,I)=Q(J,I)*C
1870 NEXT I
1880 FOR I=1 TO M
1890 IF I=J THEN 1940
1900 C=-Q(I,J)
1910 FOR T=J TO M+1
1920 Q(I,T)=Q(I,T)+C*Q(J,T)
1930 NEXT T
1940 NEXT I
1950 NEXT J
1960 FOR I=1 TO M
1970 H(I,Z)=Q(I,M+1)
1980 NEXT I
1990 NEXT Z
2000 LPRINT  "==========================================="
2010 FOR I=1 TO M
2020 FOR J=1 TO M
2030 PRINT "c(";I;",";J;")=";H(I,J)
2040 NEXT J
2050 PRINT
2060 NEXT I
2070 PRINT "============================================="
2080 REM significant text for linear regression relation
2090 T1=0
2100 FOR I=1 TO M
2110 T1=T1+V(I)*Y(I,M+1)
2120 NEXT I
2130 LPRINT "ss=";T1
2140 LPRINT "d.f=";M
2150 T2=1-T1
2160 LPRINT "ssr=";T2
2170 LPRINT  "d.f=";N-M-1
2180 T3=T1/M
2190 T4=T2/(N-M-1)
2200 T5=T3/T4
2210 LPRINT "f=";T5
2220 REM significant text for path  coefficients: f---text
2230 DIM F(M)
2240 FOR I=1 TO M
2250 F(I)=V(I)*V(I)/(T4*H(I,I))
2260 LPRINT "F(";I;")=";F(I)
2270 NEXT I
2280 LPRINT
2290 T6=T4*S(M+1,M+1)
2300 LPRINT "SE=";SQR(T6)
9999 END
 --------------------编程问答-------------------- 欢迎楼下人力。。。 --------------------编程问答-------------------- 找一张原版Windows 98安装盘,在里面搜索qbasic.exe。
把程序保存为一个文本文件。
打开它,执行上面的代码,你可以单步运行之,看结果。 --------------------编程问答-------------------- 帮你解释几行吧,代码太多,你安照给你样子,自己改吧:

Private Sub Command1_Click()
10 Rem use path 易做图ysis
20 Print "input number m1=? n1=? "
'以下两句VB不支持,可以使用两个文本控件转换为M1,N1
'30 INPUT M1,N1
'40 LPRINT "m1=";M1,"n1=";N1

50 ReDim B(M1, N1 + 1), A(N1 + 1, M1) 'Dim B(M1, N1 + 1), A(N1 + 1, M1)

60 Open "a:FA6.TXT" For Input As #1 '现在应该没有软盘A了,改为你fat16.txt所在为文件路径

'读取文件数据
70 For I = 1 To M1
80  For J = 1 To N1 + 1
90      Input #1, B(I, J)
110 Next J
130 Next I
140 Close

'将数组B转到数组A,并打印每个数据
160 For I = 1 To N1 + 1
170 For J = 1 To M1
180 A(I, J) = B(J, I): Print A(I, J);
190 Next J
200 Print
210 Next I


220 M = N1: N = M1
230 ReDim X(M + 1) 'Dim X(M + 1)

'累加每行值到X数组
240 For I = 1 To M + 1
250 X(I) = 0
260 For J = 1 To N
270 X(I) = X(I) + A(I, J)
280 Next J

'求每行数的平均值
290 X(I) = X(I) / N
'300 LPRINT "aver(";I;")=";X(I),打印平均值,你可以将Lprint改为print
310 Next I

320 Dim S(M + 1, M + 1)
330 For I = 1 To M + 1
340 For J = 1 To M + 1
350 S(I, J) = 0
360 For K = 1 To N
370 S(I, J) = S(I, J) + A(I, K) * A(J, K)
380 Next K

390 S(I, J) = S(I, J) - N * X(I) * X(J)
400 Print "fal("; I; ","; J; ")="; S(I, J);
410 Next J
420 Print
430 Next I
440 For K = 1 To M + 1
450 LPRINT "s";K;"=";SQR(S(K,K)/(N-1))
455 Next K
460 Rem correlation coefficients
470 Dim Y(M + 1, M + 1), R(M + 1, M + 1)
480 For I = 1 To M + 1
490 For J = 1 To M + 1
500 G = Sqr(S(I, I) * S(J, J))
510 R(I, J) = S(I, J) / G
520 LPRINT "r(";I;",";J;")=";R(I,J)
530 Y(I, J) = R(I, J)
540 Next J
550 Next I
560 For I = 1 To M
570 If R(I, I) <> 0 Then GoTo 640
580 For K = I + 1 To M
590 If R(K, I) <> 0 Then GoTo 630
600 Next K
610 Print "no unique solution"
620 GoTo 9999
630 GoSub 730
640 C = 1 / R(I, I)
650 GoSub 790
660 For K = 1 To M
670 If K = I Then GoTo 700
680 C = -R(K, I)
690 GoSub 830
700 Next K
710 Next I
720 GoTo 870
730 For J = 1 To M + 1
740 B = R(I, J)
750 R(I, J) = R(K, J)
760 R(K, J) = B
770 Next J
780 Return
790 For J = 1 To M + 1
800 R(I, J) = C * R(I, J)
810 Next J
820 Return
830 For J = 1 To M + 1
840 R(K, J) = R(K, J) + C * R(I, J)
850 Next J
860 Return
870 Dim V(M)
880 Rem path coefficients
890 For I = 1 To M
900 V(I) = R(I, M + 1)
910 LPRINT "p(y.x";I;")=";V(I)
920 Next I
930 Print
940 Rem coefficients of determination
950 Dim U(M)
960 S = 0
970 For I = 1 To M
980 U(I) = V(I) * V(I)
990 S = S + U(I)
1000 LPRINT "d(y.x";I;")=";U(I)
1010 Next I
1020 Rem 易做图ysis for degree of determination
1030 LPRINT
1040 B = 2
1050 T = 0
1060 For I = 1 To M - 1
1070 For J = B To M
1080 F = 2 * V(I) * Y(I, J) * V(J)
1090 LPRINT "d(y.x";I;"x";J;")=";F
1100 T = T + F
1110 Next J
1120 B = B + 1
1130 Next I
1140 LPRINT
1150 L = 1 - (S + T)
1160 LPRINT "dy.e=";L
1170 If L <= 0 Then GoTo 1190
1180 LPRINT "py.e=";SQR(L)
1190 W = 0
1200 LPRINT "*****************************************"
1210 For I = 1 To M
1220 LPRINT "r(";I;",";J;")=";Y(I,M+1)
1230 For J = 1 To M
1240 LPRINT "r(";I;",";J;")*py.x";J;"=";Y(I,J)*V(J)
1250 W = W + Y(I, J) * V(J)
1260 Next J
1270 LPRINT "******************************************"
1280 LPRINT "total=";W
1290 W = 0
1300 LPRINT "******************************************"
1310 LPRINT
1320 Next I
1330 Rem regression equation
1340 LPRINT
1350 Dim BB(M)
1355 Dim Z(M + 1)
1360 For I = 1 To M + 1
1370 Z(I) = Sqr(S(I, I))
1380 Next I
1390 For J = 1 To M
1400 BB(J) = V(J) * Z(M + 1) / Z(J)
1410 LPRINT "b(";J;")=";BB(J)
1420 Next J
1430 D = 0
1440 For K = 1 To M
1450 D = D + BB(K) * X(K)
1460 Next K
1470 D = X(M + 1) - D
1480 LPRINT "b(0)=";D;
1490 LPRINT "y=";D
1500 For K = 1 To M
1510 LPRINT "+(";BB(K);")*x";K;
1520 Next K
1530 LPRINT
1540 Rem gauss multilies
1550 Dim C(M, M), Q(M, N + 1), H(M, M)
1560 For Z1 = 1 To M
1570 For Z2 = 1 To M
1580 If Z1 = Z2 Then GoTo 1610
1590 C(Z1, Z2) = 0
1600 GoTo 1620
1610 C(Z1, Z2) = 1
1620 Next Z2
1630 Print
1640 Next Z1
1650 Print
1660 For Z = 1 To M
1670 For I = 1 To M
1680 For J = 1 To M
1690 Q(I, J) = Y(I, J)
1700 Next J
1710 Q(I, M + 1) = C(Z, I)
1720 Next I
1730 For J = 1 To M
1740 For I = J To M
1750 If Q(I, J) <> 0 Then GoTo 1790
1760 Next I
1770 LPRINT "no unioue solution"
1780 GoTo 9999
1790 For K = J To M + 1
1800 B = Q(J, K)
1810 Q(J, K) = Q(I, K)
1820 Q(I, K) = B
1830 Next K
1840 C = 1 / Q(J, J)
1850 For I = J To M + 1
1860 Q(J, I) = Q(J, I) * C
1870 Next I
1880 For I = 1 To M
1890 If I = J Then GoTo 1940
1900 C = -Q(I, J)
1910 For T = J To M + 1
1920 Q(I, T) = Q(I, T) + C * Q(J, T)
1930 Next T
1940 Next I
1950 Next J
1960 For I = 1 To M
1970 H(I, Z) = Q(I, M + 1)
1980 Next I
1990 Next Z
2000 LPRINT "==========================================="
2010 For I = 1 To M
2020 For J = 1 To M
2030 Print "c("; I; ","; J; ")="; H(I, J)
2040 Next J
2050 Print
2060 Next I
2070 Print "============================================="
2080 Rem significant text for linear regression relation
2090 T1 = 0
2100 For I = 1 To M
2110 T1 = T1 + V(I) * Y(I, M + 1)
2120 Next I
2130 LPRINT "ss=";T1
2140 LPRINT "d.f=";M
2150 T2 = 1 - T1
2160 LPRINT "ssr=";T2
2170 LPRINT "d.f=";N-M-1
2180 T3 = T1 / M
2190 T4 = T2 / (N - M - 1)
2200 T5 = T3 / T4
2210 LPRINT "f=";T5
2220 Rem significant text for path coefficients: f---text
2230 Dim F(M)
2240 For I = 1 To M
2250 F(I) = V(I) * V(I) / (T4 * H(I, I))
2260 LPRINT "F(";I;")=";F(I)
2270 Next I
2280 LPRINT
2290 T6 = T4 * S(M + 1, M + 1)
2300 LPRINT "SE=";SQR(T6)
9999 End

End Sub
--------------------编程问答-------------------- 找易做图4.5然后按F1看帮助 --------------------编程问答-------------------- BASIC不是B语言 --------------------编程问答-------------------- 是汇编语言 --------------------编程问答-------------------- 汇编就复杂了。 --------------------编程问答-------------------- 楼上两位不要自问自答吓坏了楼主. 这只是早期的BASIC语言而已. 解决方法2楼和4楼已经说了. --------------------编程问答--------------------
引用 8 楼  的回复:
楼上两位不要自问自答吓坏了楼主. 这只是早期的BASIC语言而已. 解决方法2楼和4楼已经说了.


在VB中创建一个工程,删除掉Form1,添加一个Bas模块,添加一个Main过程,将LZ的代码考进Sub Main里
修改掉几个VB不支持的语句(Input,等),将Lprint改为:debug.print

可惜,这段代码有问题,S既为数组,又给它赋值常数,不然,就可以运行了

:)
补充:VB ,  COM/DCOM/COM+
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,