X-Git-Url: http://www2.svjatoslav.eu/gitweb/?p=qbasicapps.git;a=blobdiff_plain;f=math%2Flogic.bas;fp=math%2Flogic.bas;h=4692e8927741504d4a6f0390b065690ded6b4831;hp=ab35157040fa9a42ab0cb6bd62758f762bfbfb3a;hb=08a50b7a860f6aa39f58108a07e2fc13e46260b9;hpb=68c9ea9c1b1c03a3d38bd585f0bdeee6371cb05b diff --git a/math/logic.bas b/math/logic.bas old mode 100755 new mode 100644 index ab35157..4692e89 --- a/math/logic.bas +++ b/math/logic.bas @@ -1,8 +1,8 @@ ' Logical equation solver ' made by Svjatoslav Agejenko ' in 2002 -' H-Page: svjatoslav.eu -' E-Mail: svjatoslavagejenko@gmail.com +' homepage: svjatoslav.eu +' email: svjatoslav@svjatoslav.eu ' Solves logical equations. ' AND OR XOR etc... @@ -43,22 +43,22 @@ GOTO 13 SUB getp (a, b) SELECT CASE a -CASE 5 -b = 1 -CASE 3, 4 -b = 2 -CASE 2 -b = 3 -CASE 1 -b = 4 -CASE 40, 41 -b = 100 + CASE 5 + b = 1 + CASE 3, 4 + b = 2 + CASE 2 + b = 3 + CASE 1 + b = 4 + CASE 40, 41 + b = 100 END SELECT END SUB SUB klea FOR a = 1 TO 50 -a$ = INKEY$ + a$ = INKEY$ NEXT a END SUB @@ -66,7 +66,7 @@ SUB lahend (x1, x2) DIM muu(65 TO 122) FOR a = 65 TO 122 -muu(a) = 0 + muu(a) = 0 NEXT a muu(116) = 1 @@ -74,14 +74,14 @@ muu(118) = 1 nm = 0 FOR a = x1 TO x2 -b = tehe(a) -IF ((b >= 65) AND (b <= 90)) OR ((b >= 97) AND (b <= 122)) THEN -IF muu(b) = 0 THEN -nm = nm + 1 -muun(nm) = b -muu(b) = 1 -END IF -END IF + b = tehe(a) + IF ((b >= 65) AND (b <= 90)) OR ((b >= 97) AND (b <= 122)) THEN + IF muu(b) = 0 THEN + nm = nm + 1 + muun(nm) = b + muu(b) = 1 + END IF + END IF NEXT a muun(nm + 1) = 116 @@ -90,28 +90,28 @@ muun(nm + 2) = 118 f = 2 ^ nm tehl = f FOR a = 1 TO nm -d = 1 -e = 1 -f = f / 2 -FOR b = 1 TO 2 ^ nm -IF e > f THEN d = -d: e = 1 -IF d = 1 THEN c = ASC("t") ELSE c = ASC("v") -muut(a, b) = c -e = e + 1 -NEXT b + d = 1 + e = 1 + f = f / 2 + FOR b = 1 TO 2 ^ nm + IF e > f THEN d = -d: e = 1 + IF d = 1 THEN c = ASC("t") ELSE c = ASC("v") + muut(a, b) = c + e = e + 1 + NEXT b NEXT a FOR a = 1 TO tehl -muut(nm + 1, a) = 116 -muut(nm + 2, a) = 118 + muut(nm + 1, a) = 116 + muut(nm + 2, a) = 118 NEXT a nm = nm + 2 DIM bck(0 TO 79) FOR a = 0 TO 79 -bck(a) = tehe(a) -xloc(a) = a + bck(a) = tehe(a) + xloc(a) = a NEXT a LOCATE 5, 1 @@ -124,11 +124,11 @@ teeslg x1, x2, a tee x1, x2 + a FOR a = 0 TO 79 -tehe(a) = bck(a) + tehe(a) = bck(a) NEXT a FOR a = 1 TO tehl -prn x2 + 1, a, 14, 0, CHR$(vast(a)) + prn x2 + 1, a, 14, 0, CHR$(vast(a)) NEXT a @@ -166,21 +166,21 @@ l = l1 'BEEP prnp = prnp + 1 FOR a = x1 TO x2 - l -prn a, 0, 13, 1, CHR$(tehe(a)) + prn a, 0, 13, 1, CHR$(tehe(a)) NEXT a END SUB SUB mov (x1, n) FOR a = 79 - n TO x1 STEP -1 -tehe(a + n) = tehe(a) -xloc(a + n) = xloc(a) + tehe(a + n) = tehe(a) + xloc(a + n) = xloc(a) NEXT a END SUB SUB movm (x1, n) FOR a = x1 TO 79 - n -tehe(a) = tehe(a + n) -xloc(a) = xloc(a + n) + tehe(a) = tehe(a + n) + xloc(a) = xloc(a + n) NEXT a END SUB @@ -189,22 +189,22 @@ CLS ln = 79 FOR a = 0 TO 79 -5 -IF tehe(a) = 32 OR tehe(a) = 0 THEN -FOR b = a TO 78 -tehe(b) = tehe(b + 1) -NEXT b -ln = ln - 1 -IF ln <= a - 1 THEN GOTO 6 -GOTO 5 -END IF + 5 + IF tehe(a) = 32 OR tehe(a) = 0 THEN + FOR b = a TO 78 + tehe(b) = tehe(b + 1) + NEXT b + ln = ln - 1 + IF ln <= a - 1 THEN GOTO 6 + GOTO 5 + END IF NEXT a 6 CLS FOR a = 0 TO ln -prn a, 0, 13, 1, CHR$(tehe(a)) + prn a, 0, 13, 1, CHR$(tehe(a)) NEXT a prn 0, 1, 7, 0, "Do you want to simplyfy it (unfinished so press N)" @@ -213,7 +213,7 @@ a = 0 klea a$ = INPUT$(1) IF a$ = "n" OR a$ = "N" THEN GOTO 24 -IF a$ = "y" OR a$ = "Y" THEN ELSE GOTO 23 +IF a$ = "y" OR a$ = "Y" THEN ELSE GOTO 23 a = 1 24 prn 0, 1, 7, 0, SPACE$(79) @@ -231,17 +231,17 @@ x1 = x * 8 y1 = (y + prnp) * 8 FOR b = 1 TO LEN(a$) -LINE (x1, y1)-(x1 + 7, y1 + 7), c1, BF -d = ASC(RIGHT$(LEFT$(a$, b), 1)) -IF d > 122 THEN GOTO 22 -FOR y2 = 0 TO 7 -FOR x2 = 0 TO 7 -c2 = font(x2, y2, d) -IF c2 > 0 THEN PSET (x1 + x2, y1 + y2), c -NEXT x2 -NEXT y2 -22 -x1 = x1 + 8 + LINE (x1, y1)-(x1 + 7, y1 + 7), c1, BF + d = ASC(RIGHT$(LEFT$(a$, b), 1)) + IF d > 122 THEN GOTO 22 + FOR y2 = 0 TO 7 + FOR x2 = 0 TO 7 + c2 = font(x2, y2, d) + IF c2 > 0 THEN PSET (x1 + x2, y1 + y2), c + NEXT x2 + NEXT y2 + 22 + x1 = x1 + 8 NEXT b END SUB @@ -254,30 +254,30 @@ l2 = 0 a = x1 26 IF tehe(a) = 40 THEN -IF a = x1 THEN p1 = 100 ELSE getp tehe(a - 1), p1 -c = a -d = 1 -p2 = 0 -25 -c = c + 1 -IF tehe(c) = 40 THEN d = d + 1 -IF tehe(c) = 41 THEN d = d - 1 -IF d = 1 THEN -IF (tehe(c) > 0) AND (tehe(c) <= 5) THEN -getp tehe(c), b -IF b > p2 THEN p2 = b -END IF -END IF -IF d > 0 THEN GOTO 25 -IF c + 1 > x2 THEN p3 = 100 ELSE getp tehe(c + 1), p3 - -IF (p1 > p2) AND (p3 >= p2) THEN -movm c, 1 -movm a, 1 -l2 = l2 + 2 -x2 = x2 - 2 -a = a - 1 -END IF + IF a = x1 THEN p1 = 100 ELSE getp tehe(a - 1), p1 + c = a + d = 1 + p2 = 0 + 25 + c = c + 1 + IF tehe(c) = 40 THEN d = d + 1 + IF tehe(c) = 41 THEN d = d - 1 + IF d = 1 THEN + IF (tehe(c) > 0) AND (tehe(c) <= 5) THEN + getp tehe(c), b + IF b > p2 THEN p2 = b + END IF + END IF + IF d > 0 THEN GOTO 25 + IF c + 1 > x2 THEN p3 = 100 ELSE getp tehe(c + 1), p3 + + IF (p1 > p2) AND (p3 >= p2) THEN + movm c, 1 + movm a, 1 + l2 = l2 + 2 + x2 = x2 - 2 + a = a - 1 + END IF END IF 'NEXT a a = a + 1 @@ -291,13 +291,13 @@ prn 0, 0, 3, 0, "enter equation (ESC to quit) keys: 1 - " + CHR$(1) + " 2 - " prn 0, 1, 3, 0, "example: a" + CHR$(1) + "b" + CHR$(2) + "(g" + CHR$(3) + "b)" FOR a = 0 TO 79 -tehe(a) = 0 + tehe(a) = 0 NEXT a x = 0 1 FOR a = 0 TO 79 -IF a = x THEN prn a, 2, 14, 1, CHR$(tehe(a)) ELSE prn a, 2, 3, 0, CHR$(tehe(a)) + IF a = x THEN prn a, 2, 14, 1, CHR$(tehe(a)) ELSE prn a, 2, 3, 0, CHR$(tehe(a)) NEXT a 2 a$ = INKEY$ @@ -310,27 +310,27 @@ IF x < 0 THEN x = 0 IF x > 79 THEN x = 79 IF LEN(a$) = 1 THEN -SELECT CASE ASC(a$) -CASE 32, 40, 41, 65 TO 90, 97 TO 122 -3 -FOR a = 78 TO x STEP -1 -tehe(a + 1) = tehe(a) -NEXT a -tehe(x) = ASC(a$) -x = x + 1 -CASE 8 -IF x > 0 THEN -FOR a = x - 1 TO 78 -tehe(a) = tehe(a + 1) -NEXT a -x = x - 1 -END IF -CASE 49 TO 53 -a$ = CHR$(ASC(a$) - 48) -GOTO 3 -CASE 13 -GOTO 4 -END SELECT + SELECT CASE ASC(a$) + CASE 32, 40, 41, 65 TO 90, 97 TO 122 + 3 + FOR a = 78 TO x STEP -1 + tehe(a + 1) = tehe(a) + NEXT a + tehe(x) = ASC(a$) + x = x + 1 + CASE 8 + IF x > 0 THEN + FOR a = x - 1 TO 78 + tehe(a) = tehe(a + 1) + NEXT a + x = x - 1 + END IF + CASE 49 TO 53 + a$ = CHR$(ASC(a$) - 48) + GOTO 3 + CASE 13 + GOTO 4 + END SELECT END IF GOTO 1 @@ -345,49 +345,49 @@ prnp = 0 SCREEN 7 FOR a = 0 TO 122 -LOCATE 1, 1 -SELECT CASE a -CASE 7 -CASE 1 -LINE (0, 0)-(7, 7), 0, BF -LINE (2, 1)-(0, 3), 15 -LINE (1, 4)-(2, 5), 15 -LINE (5, 1)-(7, 3), 15 -LINE (6, 4)-(5, 5), 15 -LINE (1, 2)-(5, 2), 15 -LINE (1, 4)-(5, 4), 15 - -CASE 2 -LINE (0, 0)-(7, 7), 0, BF -LINE (5, 1)-(7, 3), 15 -LINE (6, 4)-(5, 5), 15 -LINE (1, 2)-(5, 2), 15 -LINE (1, 4)-(5, 4), 15 - -CASE 3 -LINE (0, 0)-(7, 7), 0, BF -LINE (0, 0)-(3, 7), 15 -LINE (6, 0)-(3, 7), 15 - -CASE 4 -LINE (0, 0)-(7, 7), 0, BF -LINE (0, 7)-(3, 0), 15 -LINE (6, 7)-(3, 0), 15 - -CASE 5 -LINE (0, 0)-(7, 7), 0, BF -LINE (0, 0)-(4, 0), 15 -LINE (4, 1)-(4, 7), 15 - -CASE ELSE -PRINT CHR$(a) -END SELECT - -FOR y = 0 TO 7 -FOR x = 0 TO 7 -font(x, y, a) = POINT(x, y) -NEXT x -NEXT y + LOCATE 1, 1 + SELECT CASE a + CASE 7 + CASE 1 + LINE (0, 0)-(7, 7), 0, BF + LINE (2, 1)-(0, 3), 15 + LINE (1, 4)-(2, 5), 15 + LINE (5, 1)-(7, 3), 15 + LINE (6, 4)-(5, 5), 15 + LINE (1, 2)-(5, 2), 15 + LINE (1, 4)-(5, 4), 15 + + CASE 2 + LINE (0, 0)-(7, 7), 0, BF + LINE (5, 1)-(7, 3), 15 + LINE (6, 4)-(5, 5), 15 + LINE (1, 2)-(5, 2), 15 + LINE (1, 4)-(5, 4), 15 + + CASE 3 + LINE (0, 0)-(7, 7), 0, BF + LINE (0, 0)-(3, 7), 15 + LINE (6, 0)-(3, 7), 15 + + CASE 4 + LINE (0, 0)-(7, 7), 0, BF + LINE (0, 7)-(3, 0), 15 + LINE (6, 7)-(3, 0), 15 + + CASE 5 + LINE (0, 0)-(7, 7), 0, BF + LINE (0, 0)-(4, 0), 15 + LINE (4, 1)-(4, 7), 15 + + CASE ELSE + PRINT CHR$(a) + END SELECT + + FOR y = 0 TO 7 + FOR x = 0 TO 7 + font(x, y, a) = POINT(x, y) + NEXT x + NEXT y NEXT a SCREEN 12 @@ -405,99 +405,99 @@ oex = 0 FOR a = x1 TO x2 -b = tehe(a) -SELECT CASE b -CASE 40 -c = a -d = 1 -10 -c = c + 1 -IF tehe(c) = ASC("(") THEN d = d + 1 -IF tehe(c) = ASC(")") THEN d = d - 1 -IF d = 0 THEN GOTO 11 -GOTO 10 -11 -tee a + 1, c - 1 -a = c -FOR c = 1 TO tehl -opr(oprm, c) = vast(c) -NEXT c -GOTO 12 -CASE 5 -ng = 1 -ngx = a -CASE 1 TO 4 -oe = b -oex = a -CASE 65 TO 90, 97 TO 122 -FOR c = 1 TO nm -IF muun(c) = b THEN d = c: GOTO 8 -NEXT c -8 -FOR c = 1 TO tehl -opr(oprm, c) = muut(d, c) -prn xloc(a), c, 3, 0, CHR$(muut(d, c)) -NEXT c -12 -IF ng = 1 THEN GOSUB mkneg -IF oprm = 2 THEN -SELECT CASE oe -CASE 1 -FOR c = 1 TO tehl -d = opr(1, c) -e = opr(2, c) -IF d = e THEN f = ASC("t") ELSE f = ASC("v") -opr(1, c) = f -prn xloc(oex), c, 12, 0, CHR$(f) -NEXT c -CASE 2 -FOR c = 1 TO tehl -d = opr(1, c) -e = opr(2, c) -f = ASC("t") -IF (d = ASC("t")) AND (e = ASC("v")) THEN f = ASC("v") -opr(1, c) = f -prn xloc(oex), c, 12, 0, CHR$(f) -NEXT c -CASE 3 -FOR c = 1 TO tehl -d = opr(1, c) -e = opr(2, c) -f = ASC("t") -IF (d = ASC("v")) AND (e = ASC("v")) THEN f = ASC("v") -opr(1, c) = f -prn xloc(oex), c, 12, 0, CHR$(f) -NEXT c -CASE 4 -FOR c = 1 TO tehl -d = opr(1, c) -e = opr(2, c) -f = ASC("v") -IF (d = ASC("t")) AND (e = ASC("t")) THEN f = ASC("t") -opr(1, c) = f -prn xloc(oex), c, 12, 0, CHR$(f) -NEXT c -END SELECT -ELSE -oprm = oprm + 1 -END IF -END SELECT + b = tehe(a) + SELECT CASE b + CASE 40 + c = a + d = 1 + 10 + c = c + 1 + IF tehe(c) = ASC("(") THEN d = d + 1 + IF tehe(c) = ASC(")") THEN d = d - 1 + IF d = 0 THEN GOTO 11 + GOTO 10 + 11 + tee a + 1, c - 1 + a = c + FOR c = 1 TO tehl + opr(oprm, c) = vast(c) + NEXT c + GOTO 12 + CASE 5 + ng = 1 + ngx = a + CASE 1 TO 4 + oe = b + oex = a + CASE 65 TO 90, 97 TO 122 + FOR c = 1 TO nm + IF muun(c) = b THEN d = c: GOTO 8 + NEXT c + 8 + FOR c = 1 TO tehl + opr(oprm, c) = muut(d, c) + prn xloc(a), c, 3, 0, CHR$(muut(d, c)) + NEXT c + 12 + IF ng = 1 THEN GOSUB mkneg + IF oprm = 2 THEN + SELECT CASE oe + CASE 1 + FOR c = 1 TO tehl + d = opr(1, c) + e = opr(2, c) + IF d = e THEN f = ASC("t") ELSE f = ASC("v") + opr(1, c) = f + prn xloc(oex), c, 12, 0, CHR$(f) + NEXT c + CASE 2 + FOR c = 1 TO tehl + d = opr(1, c) + e = opr(2, c) + f = ASC("t") + IF (d = ASC("t")) AND (e = ASC("v")) THEN f = ASC("v") + opr(1, c) = f + prn xloc(oex), c, 12, 0, CHR$(f) + NEXT c + CASE 3 + FOR c = 1 TO tehl + d = opr(1, c) + e = opr(2, c) + f = ASC("t") + IF (d = ASC("v")) AND (e = ASC("v")) THEN f = ASC("v") + opr(1, c) = f + prn xloc(oex), c, 12, 0, CHR$(f) + NEXT c + CASE 4 + FOR c = 1 TO tehl + d = opr(1, c) + e = opr(2, c) + f = ASC("v") + IF (d = ASC("t")) AND (e = ASC("t")) THEN f = ASC("t") + opr(1, c) = f + prn xloc(oex), c, 12, 0, CHR$(f) + NEXT c + END SELECT + ELSE + oprm = oprm + 1 + END IF + END SELECT NEXT a GOTO 9 mkneg: FOR c = 1 TO tehl -d = opr(oprm, c) -IF d = ASC("t") THEN d = ASC("v") ELSE d = ASC("t") -prn xloc(ngx), c, 4, 0, CHR$(d) -opr(oprm, c) = d + d = opr(oprm, c) + IF d = ASC("t") THEN d = ASC("v") ELSE d = ASC("t") + prn xloc(ngx), c, 4, 0, CHR$(d) + opr(oprm, c) = d NEXT c ng = 0 RETURN 9 FOR c = 1 TO tehl -vast(c) = opr(1, c) + vast(c) = opr(1, c) NEXT c END SUB @@ -505,80 +505,80 @@ SUB teeslg (x1, x4, l) x2 = x4 h = 0 FOR e = 1 TO 4 -g = 1 -'FOR a = x1 TO x2 -a = x1 -21 -b = tehe(a) -IF b = 40 THEN -c = a -d = 1 -14 -c = c + 1 -IF tehe(c) = 40 THEN d = d + 1 -IF tehe(c) = 41 THEN d = d - 1 -IF d = 0 THEN GOTO 15 -GOTO 14 -15 -IF e = 1 THEN teeslg a + 1, c - 1, l ELSE l = 0 -a = c + l -x2 = x2 + l -h = h + l -GOTO 16 -END IF - -IF (b = 5) AND (e = 1) AND (g > 1) THEN -mov a, 1 -tehe(a) = 40 -lendp a + 2, f -mov a + 2 + f, 1 -tehe(a + 2 + f) = 41 -h = h + 2 -x2 = x2 + 2 -a = a + 2 + f -GOTO 16 -END IF - -IF (b = 3 OR b = 4) AND (e = 2) AND (g > 2) THEN -lendm a - 1, f -mov a - f, 1 -tehe(a - f) = 40 -lendp a + 2, f -mov a + 2 + f, 1 -tehe(a + 2 + f) = 41 -h = h + 2 -x2 = x2 + 2 -a = a + 2 + f -GOTO 16 -END IF - -IF (b = 2) AND (e = 3) AND (g > 3) THEN -lendm a - 1, f -mov a - f, 1 -tehe(a - f) = 40 -lendp a + 2, f -mov a + 2 + f, 1 -tehe(a + 2 + f) = 41 -h = h + 2 -x2 = x2 + 2 -a = a + 2 + f -GOTO 16 -END IF - - -SELECT CASE b -CASE 5 -g = 1 -CASE 3, 4 -g = 2 -CASE 2 -g = 3 -CASE 1 -g = 4 -END SELECT -16 -a = a + 1 -IF a <= x2 THEN GOTO 21 + g = 1 + 'FOR a = x1 TO x2 + a = x1 + 21 + b = tehe(a) + IF b = 40 THEN + c = a + d = 1 + 14 + c = c + 1 + IF tehe(c) = 40 THEN d = d + 1 + IF tehe(c) = 41 THEN d = d - 1 + IF d = 0 THEN GOTO 15 + GOTO 14 + 15 + IF e = 1 THEN teeslg a + 1, c - 1, l ELSE l = 0 + a = c + l + x2 = x2 + l + h = h + l + GOTO 16 + END IF + + IF (b = 5) AND (e = 1) AND (g > 1) THEN + mov a, 1 + tehe(a) = 40 + lendp a + 2, f + mov a + 2 + f, 1 + tehe(a + 2 + f) = 41 + h = h + 2 + x2 = x2 + 2 + a = a + 2 + f + GOTO 16 + END IF + + IF (b = 3 OR b = 4) AND (e = 2) AND (g > 2) THEN + lendm a - 1, f + mov a - f, 1 + tehe(a - f) = 40 + lendp a + 2, f + mov a + 2 + f, 1 + tehe(a + 2 + f) = 41 + h = h + 2 + x2 = x2 + 2 + a = a + 2 + f + GOTO 16 + END IF + + IF (b = 2) AND (e = 3) AND (g > 3) THEN + lendm a - 1, f + mov a - f, 1 + tehe(a - f) = 40 + lendp a + 2, f + mov a + 2 + f, 1 + tehe(a + 2 + f) = 41 + h = h + 2 + x2 = x2 + 2 + a = a + 2 + f + GOTO 16 + END IF + + + SELECT CASE b + CASE 5 + g = 1 + CASE 3, 4 + g = 2 + CASE 2 + g = 3 + CASE 1 + g = 4 + END SELECT + 16 + a = a + 1 + IF a <= x2 THEN GOTO 21 NEXT e l = h END SUB