怎样用qbasic解一个未知数的方程.最好有过程,有讲解

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/29 12:05:14
怎样用qbasic解一个未知数的方程.最好有过程,有讲解

怎样用qbasic解一个未知数的方程.最好有过程,有讲解
怎样用qbasic解一个未知数的方程.最好有过程,有讲解

怎样用qbasic解一个未知数的方程.最好有过程,有讲解
对于这种问题,有点无语,比较难!
给你一个解带括号的算式值的程序吧!
CLS
INPUT A$
L = LEN(A$)
DIM A$(L),B(L)
PRINT A$; "=";
DO
Q = INSTR(A$,")")
IF Q 0 THEN
K = 0
DO
K = INSTR(K + 1,A$,"(")
IF K < Q AND K 0 THEN P = K
LOOP UNTIL K = 0 OR K > Q
AA$ = MID$(A$,1,P - 1)
AB$ = MID$(A$,P + 1,Q - (P + 1))
AC$ = MID$(A$,Q + 1)
GOSUB 100
AB$ = LTRIM$(STR$(B(1)))
A$ = AA$ + AB$ + AC$
END IF
LOOP UNTIL Q = 0
AB$ = A$
GOSUB 100
PRINT B(1)
END
100
T$ = ""
J = 1
LA = LEN(AB$)
FOR I = 1 TO LA
X$ = MID$(AB$,I,1)
IF X$ = "+" OR X$ = "-" OR X$ = "*" OR X$ = "/" THEN
A$(J) = X$
B(J) = VAL(T$)
T$ = ""
J = J + 1
ELSE
T$ = T$ + X$
END IF
NEXT I
B(J) = VAL(T$)
FOR T = 1 TO J
IF A$(T) = "*" THEN B(T) = B(T) * B(T + 1):GOSUB 200
IF A$(T) = "/" THEN B(T) = B(T) / B(T + 1):GOSUB 200
NEXT T
FOR T = 1 TO J
IF A$(T) = "+" THEN B(T) = B(T) + B(T + 1):GOSUB 200
IF A$(T) = "-" THEN B(T) = B(T) - B(T + 1):GOSUB 200
NEXT T
RETURN
200
FOR P = T TO LA - 2
A$(P) = A$(P + 1)
B(P + 1) = B(P + 2)
NEXT P
J = J - 1
T = T - 1
RETURN
解方程于它的原理差不多,都是先找括号,算完括号在解决其他.
主要利用栈的思想(注意用过程),而解方程再多一步变式就ok!