1: DECLARE FUNCTION Add$ (nnn1$, nnn2$) 2: DECLARE FUNCTION AddComma$ (N$) 3: DECLARE FUNCTION Div$ (nnn1$, nnn2$) 4: DECLARE FUNCTION Fact$ (nn$) 5: DECLARE FUNCTION IsGreater! (nnn1$, nnn2$) 6: DECLARE FUNCTION Mul$ (nnn1$, nnn2$) 7: DECLARE FUNCTION Pwr$ (n1$, n2$) 8: DECLARE FUNCTION RemoveSpace$ (t$) 9: DECLARE FUNCTION RemoveZero$ (n1$) 10: DECLARE FUNCTION Solve$ (oe$, Meth!) 11: DECLARE FUNCTION SolveSimple$ (equ$, Meth!) 12: DECLARE FUNCTION Subt$ (nnn1$, nnn2$) 13: Attribute VB 14: 15: FUNCTION Add$ (nnn1$, nnn2$) 16: n1$ = Trim$(nnn1$): n2$ = Trim$(nnn2$) 17: IF INSTR(n1$, "-") <> 0 XOR INSTR(n2$, "-") <> 0 THEN 18: IF INSTR(n2$, "-") <> 0 THEN Add$ = Subt$(RIGHT$(n1$, LEN(n1$) - INSTR(n1$, "-")), RIGHT$(n2$, LEN(n2$) - INSTR(n2$, "-"))): EXIT FUNCTION 19: IF INSTR(n1$, "-") <> 0 THEN Add$ = Subt$(RIGHT$(n2$, LEN(n2$) - INSTR(n2$, "-")), RIGHT$(n1$, LEN(n1$) - INSTR(n1$, "-"))): EXIT FUNCTION 20: END IF 21: IF INSTR(n1$, "-") <> 0 AND INSTR(n2$, "-") <> 0 THEN Neg$ = "-": n1$ = RIGHT$(n1$, LEN(n1$) - INSTR(n1$, "-")): n2$ = RIGHT$(n2$, LEN(n2$) - INSTR(n2$, "-")) 22: 23: 24: 25: 26: IF INSTR(n1$, ".") <> 0 OR INSTR(n2$, ".") <> 0 THEN 27: IF INSTR(n1$, ".") = 0 THEN n1$ = n1$ + ".0" 28: IF INSTR(n2$, ".") = 0 THEN n2$ = n2$ + ".0" 29: IF INSTR(n1$, ".") > INSTR(n2$, ".") THEN n2$ = STRING$(INSTR(n1$, ".") - INSTR(n2$, "."), "0") + n2$ ELSE n1$ = STRING$(INSTR(n2$, ".") - INSTR(n1$, "."), "0") + n1$ 30: IF LEN(n1$) - INSTR(n1$, ".") > LEN(n2$) - INSTR(n2$, ".") THEN n2$ = n2$ + STRING$((LEN(n1$) - INSTR(n1$, ".")) - (LEN(n2$) - INSTR(n2$, ".")), "0") ELSE n1$ = n1$ + STRING$((LEN(n2$) - INSTR(n2$, ".")) - (LEN(n1$) - INSTR(n1$, ".")), "0") 31: Stor = LEN(n1$) - INSTR(n1$, ".") 32: IF INSTR(n1$, ".") <> 0 THEN n1$ = LEFT$(n1$, INSTR(n1$, ".") - 1) + RIGHT$(n1$, (LEN(n1$) - INSTR(n1$, "."))) 33: IF INSTR(n2$, ".") <> 0 THEN n2$ = LEFT$(n2$, INSTR(n2$, ".") - 1) + RIGHT$(n2$, (LEN(n2$) - INSTR(n2$, "."))) 34: ELSE 35: IF LEN(n1$) > LEN(n2$) THEN n2$ = STRING$(LEN(n1$) - LEN(n2$), "0") + n2$ ELSE n1$ = STRING$(LEN(n2$) - LEN(n1$), "0") + n1$ 36: END IF 37: 38: FOR q = LEN(n1$) TO 1 STEP -1 39: mx$ = LTRIM$(RTRIM$(STR$((VAL(MID$(n1$, q, 1)) + VAL(MID$(n2$, q, 1))) + Rmd))) 40: Rmd = VAL(LEFT$(mx$, LEN(mx$) - 1)): mx$ = RIGHT$(mx$, 1) 41: cc$ = mx$ + cc$ 42: NEXT q 43: IF Rmd = 0 THEN D$ = cc$ ELSE D$ = LTRIM$(RTRIM$(STR$(Rmd))) + cc$ 44: IF Stor <> 0 THEN D$ = LEFT$(D$, LEN(D$) - Stor) + "." + RIGHT$(D$, Stor) 45: Add$ = Neg$ + D$ 46: 47: END FUNCTION 48: 49: FUNCTION AddComma$ (N$) 50: IF INSTR(N$, ".") = 0 THEN dd = LEN(N$) ELSE dd = INSTR(N$, ".") - 1 51: FOR q = dd TO 1 STEP -1 52: IF (dd - q) MOD 3 = 0 AND q <> dd THEN mm$ = "," + mm$ 53: mm$ = MID$(N$, q, 1) + mm$ 54: NEXT q 55: IF INSTR(N$, ".") <> 0 THEN dc$ = "." + RIGHT$(N$, LEN(N$) - INSTR(N$, ".")) 56: AddComma$ = mm$ + dc$ 57: END FUNCTION 58: 59: FUNCTION Div$ (nnn1$, nnn2$) 60: n1$ = nnn1$: n2$ = nnn2$ 61: IF IsGreater(n1$, n2$) = 3 THEN Div$ = "1": EXIT FUNCTION 62: IF INSTR(n1$, ".") = 0 THEN Mrk = LEN(n1$) ELSE Mrk = INSTR(n1$, ".") 63: DIM Num$(9) 64: Num$(1) = n2$ 65: FOR q = 2 TO 9 66: Num$(q) = Mul$(n2$, Trim$(STR$(q))) 67: NEXT q 68: Level = LEN(n1$) 69: DO 70: Level = Level - 1 71: c = LEN(n1$) - Level: Cl$ = "" 72: DO UNTIL 1 = 2 73: Cl$ = LEFT$(n1$, c) 74: IF IsGreater(n1$, Cl$) = 1 OR IsGreater(n1$, Cl$) = 3 THEN EXIT DO ELSE c = c + 1 75: LOOP 76: mmx = c 77: Cl$ = LEFT$(n1$, mmx) 78: FOR g = 1 TO 9 79: IF IsGreater(Cl$, Num$(g)) = 2 THEN mmz = g - 1: EXIT FOR 80: NEXT g 81: tt$ = tt$ + Trim$(STR$(mmz)) 82: IF Level >= 0 THEN Post$ = STRING$(Level, "0"): pre$ = "" 'ELSE pre$ = "." + STRING$(Level * -1, "0"): Post$ = "" 83: n1$ = RemoveZero$(Subt$(n1$, Num$(mmz) + Post$)) 84: IF Level < 0 AND n1$ <> "0" THEN n1$ = n1$ + "0" 85: 'if Instr(Mrk,tt$,) 86: LOOP UNTIL n1$ = "0" OR Stpp 87: tt$ = RemoveZero$(tt$) 88: Debug.Print Mrk 89: IF LEN(tt$) = Mrk - 1 THEN Div$ = tt$ ELSE Div$ = LEFT$(tt$, Mrk) + "." + RIGHT$(tt$, LEN(tt$) - (Mrk + 1)) 90: END FUNCTION 91: 92: FUNCTION Fact$ (nn$) 93: ff$ = nn$ 94: gg$ = nn$ 95: DO 96: ff$ = RemoveZero$(Subt$(ff$, "1")) 97: gg$ = RemoveZero$(Mul$(gg$, ff$)) 98: LOOP UNTIL RemoveZero$(ff$) = "1" 99: Fact$ = RemoveZero$(gg$) 100: END FUNCTION 101: 102: FUNCTION IsGreater (nnn1$, nnn2$) 103: n1$ = nnn1$: n2$ = nnn2$ 104: IF INSTR(n1$, "-") <> 0 AND INSTR(n2$, "-") = 0 THEN IsGreater = 2: EXIT FUNCTION 105: IF INSTR(n2$, "-") <> 0 AND INSTR(n1$, "-") = 0 THEN IsGreater = 1: EXIT FUNCTION 106: IF INSTR(n2$, "-") <> 0 AND INSTR(n1$, "-") <> 0 THEN nn1$ = n1$: nn2$ = n2$: n1$ = nn2$: n2$ = nn1$ 107: 108: n1$ = RIGHT$(n1$, LEN(n1$) - INSTR(n1$, "-")): n2$ = RIGHT$(n2$, LEN(n2$) - INSTR(n2$, "-")) 109: 110: 111: IF INSTR(n1$, ".") <> 0 OR INSTR(n2$, ".") <> 0 THEN 112: IF INSTR(n1$, ".") = 0 THEN n1$ = n1$ + ".0" 113: IF INSTR(n2$, ".") = 0 THEN n2$ = n2$ + ".0" 114: IF INSTR(n1$, ".") > INSTR(n2$, ".") THEN n2$ = STRING$(INSTR(n1$, ".") - INSTR(n2$, "."), "0") + n2$ ELSE n1$ = STRING$(INSTR(n2$, ".") - INSTR(n1$, "."), "0") + n1$ 115: IF LEN(n1$) - INSTR(n1$, ".") > LEN(n2$) - INSTR(n2$, ".") THEN n2$ = n2$ + STRING$((LEN(n1$) - INSTR(n1$, ".")) - (LEN(n2$) - INSTR(n2$, ".")), "0") ELSE n1$ = n1$ + STRING$((LEN(n2$) - INSTR(n2$, ".")) - (LEN(n1$) - INSTR(n1$, ".")), "0") 116: Stor = LEN(n1$) - INSTR(n1$, ".") 117: IF INSTR(n1$, ".") <> 0 THEN n1$ = LEFT$(n1$, INSTR(n1$, ".") - 1) + RIGHT$(n1$, (LEN(n1$) - INSTR(n1$, "."))) 118: IF INSTR(n2$, ".") <> 0 THEN n2$ = LEFT$(n2$, INSTR(n2$, ".") - 1) + RIGHT$(n2$, (LEN(n2$) - INSTR(n2$, "."))) 119: ELSE 120: IF LEN(n1$) > LEN(n2$) THEN n2$ = STRING$(LEN(n1$) - LEN(n2$), "0") + n2$ ELSE n1$ = STRING$(LEN(n2$) - LEN(n1$), "0") + n1$ 121: END IF 122: 123: 124: FOR q = 1 TO LEN(n1$) 125: IF VAL(MID$(n1$, q, 1)) > VAL(MID$(n2$, q, 1)) THEN IsGreater = 1: EXIT FUNCTION 126: IF VAL(MID$(n2$, q, 1)) > VAL(MID$(n1$, q, 1)) THEN IsGreater = 2: EXIT FUNCTION 127: NEXT q 128: IsGreater = 3 129: END FUNCTION 130: 131: FUNCTION Mul$ (nnn1$, nnn2$) 132: nn1$ = Trim$(nnn1$): nn2$ = Trim$(nnn2$) 133: IF nn1$ = "1" THEN Mul$ = nn2$: EXIT FUNCTION 134: IF nn2$ = "1" THEN Mul$ = nn1$: EXIT FUNCTION 135: IF nn1$ = "-1" THEN nn2$ = " " + nn2$: MID$(nn2$, VAL(Switch$(INSTR(nn2$, "-") = 0, "1", INSTR(nn2$, "-") <> 0, STR$(INSTR(nn2$, "-")))), 1) = Switch$(INSTR(nn2$, "-") <> 0, " ", INSTR(nn2$, "-") = 0, "-"): Mul$ = Trim$(nn2$): EXIT FUNCTION 136: IF nn2$ = "-1" THEN nn1$ = " " + nn1$: MID$(nn1$, VAL(Switch$(INSTR(nn1$, "-") = 0, "1", INSTR(nn1$, "-") <> 0, STR$(INSTR(nn1$, "-")))), 1) = Switch$(INSTR(nn1$, "-") <> 0, " ", INSTR(nn1$, "-") = 0, "-"): Mul$ = Trim$(nn1$): EXIT FUNCTION 137: 138: 139: IF LEFT$(nn1$, 1) = "-" XOR LEFT$(nn2$, 1) = "-" THEN Neg$ = "-" ELSE Neg$ = "" 140: 141: IF IsGreater(n1$, n2$) = 2 THEN nn1$ = n2$: nn2$ = n1$: n1$ = nn1$: n2$ = nn2$ 142: 143: IF INSTR(n1$, ".") <> 0 OR INSTR(n2$, ".") <> 0 THEN 144: IF INSTR(n1$, ".") = 0 THEN n1$ = n1$ + ".0" 145: IF INSTR(n2$, ".") = 0 THEN n2$ = n2$ + ".0" 146: IF INSTR(n1$, ".") > INSTR(n2$, ".") THEN n2$ = STRING$(INSTR(n1$, ".") - INSTR(n2$, "."), "0") + n2$ ELSE n1$ = STRING$(INSTR(n2$, ".") - INSTR(n1$, "."), "0") + n1$ 147: IF LEN(n1$) - INSTR(n1$, ".") > LEN(n2$) - INSTR(n2$, ".") THEN n2$ = n2$ + STRING$((LEN(n1$) - INSTR(n1$, ".")) - (LEN(n2$) - INSTR(n2$, ".")), "0") ELSE n1$ = n1$ + STRING$((LEN(n2$) - INSTR(n2$, ".")) - (LEN(n1$) - INSTR(n1$, ".")), "0") 148: Stor = LEN(n1$) - INSTR(n1$, ".") 149: IF INSTR(n1$, ".") <> 0 THEN n1$ = LEFT$(n1$, INSTR(n1$, ".") - 1) + RIGHT$(n1$, (LEN(n1$) - INSTR(n1$, "."))) 150: IF INSTR(n2$, ".") <> 0 THEN n2$ = LEFT$(n2$, INSTR(n2$, ".") - 1) + RIGHT$(n2$, (LEN(n2$) - INSTR(n2$, "."))) 151: ELSE 152: IF LEN(n1$) > LEN(n2$) THEN n2$ = STRING$(LEN(n1$) - LEN(n2$), "0") + n2$ ELSE n1$ = STRING$(LEN(n2$) - LEN(n1$), "0") + n1$ 153: END IF 154: 155: 156: IF INSTR(nn1$, ".") <> 0 OR INSTR(nn2$, ".") <> 0 THEN 157: IF INSTR(nn1$, ".") = 0 THEN nn1$ = nn1$ + ".0" 158: IF INSTR(nn2$, ".") = 0 THEN nn2$ = nn2$ + ".0" 159: 160: Stor = (LEN(nn1$) - INSTR(nn1$, ".")) + (LEN(nn2$) - INSTR(nn2$, ".")) 161: IF INSTR(nn1$, ".") <> 0 THEN nn1$ = LEFT$(nn1$, INSTR(nn1$, ".") - 1) + RIGHT$(nn1$, (LEN(nn1$) - INSTR(nn1$, "."))) 162: IF INSTR(nn2$, ".") <> 0 THEN nn2$ = LEFT$(nn2$, INSTR(nn2$, ".") - 1) + RIGHT$(nn2$, (LEN(nn2$) - INSTR(nn2$, "."))) 163: END IF 164: 165: FOR q1 = LEN(nn2$) TO 1 STEP -1 166: ccc$ = STRING$(LEN(nn2$) - q1, "0") 167: FOR q2 = LEN(nn1$) TO 1 STEP -1 168: mmm$ = RTRIM$(LTRIM$(STR$((VAL(MID$(nn1$, q2, 1)) * VAL(MID$(nn2$, q1, 1))) + Rmd))) 169: Rmd = VAL(LEFT$(mmm$, LEN(mmm$) - 1)): mmm$ = RIGHT$(mmm$, 1) 170: ccc$ = mmm$ + ccc$ 171: NEXT q2 172: ccc$ = LTRIM$(RTRIM$(STR$(Rmd))) + ccc$ 173: tt$ = Add$(tt$, ccc$) 174: Rmd = 0 175: NEXT q1 176: 177: IF (LEN(tt$) - Stor) < 0 THEN tt$ = STRING$((LEN(tt$) - Stor) * -1, "0") + tt$ 178: IF Stor > 0 THEN tt$ = LEFT$(tt$, LEN(tt$) - Stor) + "." + RIGHT$(tt$, Stor) 179: 180: Mul$ = Neg$ + tt$ 181: END FUNCTION 182: 183: FUNCTION Pwr$ (n1$, n2$) 184: nz1$ = n1$ 185: nz2$ = n1$ 186: gg$ = n2$ 187: DO 188: nz1$ = RemoveZero$(Mul$(nz1$, nz2$)) 189: gg$ = RemoveZero$(Subt$(gg$, "1")) 190: LOOP UNTIL RemoveZero$(gg$) = "1" 191: Pwr$ = RemoveZero$(nz1$) 192: END FUNCTION 193: 194: FUNCTION RemoveSpace$ (t$) 195: FOR q = 1 TO LEN(t$) 196: IF MID$(t$, q, 1) = " " THEN ELSE dd$ = dd$ + MID$(t$, q, 1) 197: NEXT q 198: RemoveSpace$ = dd$ 199: END FUNCTION 200: 201: FUNCTION RemoveZero$ (n1$) 202: Neg = INSTR(n1$, "-") 203: IF INSTR(n1$, ".") = 0 THEN ddd = LEN(n1$) ELSE ddd = INSTR(n1$, ".") 204: FOR q = 1 + Neg TO ddd 205: IF MID$(n1$, q, 1) <> "0" THEN EXIT FOR 206: NEXT q 207: IF Neg <> 0 THEN Nx$ = "-" ELSE Nx$ = "" 208: IF RIGHT$(n1$, LEN(n1$) - q + 1) = "" THEN Rz$ = "0" ELSE Rz$ = RIGHT$(n1$, LEN(n1$) - q + 1) 209: IF INSTR(Rz$, ".") = 1 THEN Rz$ = "0" + Rz$ 210: IF INSTR(Rz$, ".") = 0 THEN RemoveZero$ = Nx$ + Rz$: EXIT FUNCTION 211: FOR q = LEN(Rz$) TO INSTR(Rz$, ".") STEP -1 212: IF MID$(Rz$, q, 1) <> "0" THEN EXIT FOR 213: NEXT q 214: RemoveZero$ = Nx$ + LEFT$(Rz$, q) 215: 216: END FUNCTION 217: 218: FUNCTION Solve$ (oe$, Meth) 219: e$ = Trim$(RemoveSpace$(oe$)) 220: DO 221: m = INSTR(e$, "^") 222: IF m = 0 THEN m = INSTR(e$, "*") 223: IF m = 0 THEN m = INSTR(e$, "/") 224: IF m = 0 THEN m = INSTR(e$, "+"): dd = 12 225: IF m = 0 THEN m = INSTR(e$, "-"): dd = 12 226: IF m = 1 AND dd = 12 THEN m = 0 227: dd = 0 228: IF m = 0 THEN GOTO Solved 229: FOR q = 1 TO m - 1 230: IF LTRIM$(RTRIM$(STR$(VAL(MID$(e$, m - q, 1))))) <> MID$(e$, m - q, 1) AND MID$(e$, m - q, 1) <> "." AND (q = 1 AND LEFT$(e$, 1) <> "-") THEN EXIT FOR 231: NEXT q 232: FOR q1 = m - 1 TO LEN(e$) 233: IF LTRIM$(RTRIM$(STR$(VAL(MID$(e$, m + q1, 1))))) <> MID$(e$, m + q1, 1) AND MID$(e$, m + q1, 1) <> "." THEN EXIT FOR 234: NEXT q1 235: eq$ = MID$(e$, m - q + 1, (m - q) - 1 + (q1 + m)) 236: 'MSGBOX e$ + ", " + eq$ + STR$(q) + STR$(q1) 237: 'k$ = (eq$) 238: e$ = LEFT$(e$, m - q) + SolveSimple$(eq$, Meth) + MID$(e$, q1 + m, LEN(e$)) 239: Solved: 240: LOOP UNTIL m = 0 241: Solve$ = e$ 242: END FUNCTION 243: 244: FUNCTION SolveSimple$ (equ$, Meth) 245: IF Meth = 0 THEN 246: IF INSTR(equ$, "^") <> 0 THEN z1$ = Trim$(MID$(equ$, 1, INSTR(equ$, "^") - 1)): z2$ = Trim$(MID$(equ$, INSTR(equ$, "^") + 1, LEN(equ$) - INSTR(equ$, "^"))): SolveSimple$ = RemoveZero$(Pwr$(z1$, z2$)): EXIT FUNCTION 247: IF INSTR(equ$, "*") <> 0 THEN z1$ = Trim$(MID$(equ$, 1, INSTR(equ$, "*") - 1)): z2$ = Trim$(MID$(equ$, INSTR(equ$, "*") + 1, LEN(equ$) - INSTR(equ$, "*"))): SolveSimple$ = RemoveZero$(Mul$(z1$, z2$)): EXIT FUNCTION 248: IF INSTR(equ$, "/") <> 0 THEN z1$ = Trim$(MID$(equ$, 1, INSTR(equ$, "/") - 1)): z2$ = Trim$(MID$(equ$, INSTR(equ$, "/") + 1, LEN(equ$) - INSTR(equ$, "/"))): SolveSimple$ = RemoveZero$(Div$(z1$, z2$)): EXIT FUNCTION 249: IF INSTR(equ$, "+") <> 0 THEN z1$ = Trim$(MID$(equ$, 1, INSTR(equ$, "+") - 1)): z2$ = Trim$(MID$(equ$, INSTR(equ$, "+") + 1, LEN(equ$) - INSTR(equ$, "+"))): SolveSimple$ = RemoveZero$(Add$(z1$, z2$)): EXIT FUNCTION 250: IF INSTR(equ$, "-") <> 0 THEN z1$ = Trim$(MID$(equ$, 1, INSTR(equ$, "-") - 1)): z2$ = Trim$(MID$(equ$, INSTR(equ$, "-") + 1, LEN(equ$) - INSTR(equ$, "-"))): SolveSimple$ = RemoveZero$(Subt$(z1$, z2$)): EXIT FUNCTION 251: ELSE 252: IF INSTR(equ$, "^") <> 0 THEN z1 = VAL(MID$(equ$, 1, INSTR(equ$, "^") - 1)): z2 = VAL(MID$(equ$, INSTR(equ$, "^") + 1, LEN(equ$) - INSTR(equ$, "^"))): SolveSimple$ = Trim$(STR$(z1 ^ z2)): EXIT FUNCTION 253: IF INSTR(equ$, "*") <> 0 THEN z1 = VAL(MID$(equ$, 1, INSTR(equ$, "*") - 1)): z2 = VAL(MID$(equ$, INSTR(equ$, "*") + 1, LEN(equ$) - INSTR(equ$, "*"))): SolveSimple$ = Trim$(STR$(z1 * z2)): EXIT FUNCTION 254: IF INSTR(equ$, "/") <> 0 THEN z1 = VAL(MID$(equ$, 1, INSTR(equ$, "/") - 1)): z2 = VAL(MID$(equ$, INSTR(equ$, "/") + 1, LEN(equ$) - INSTR(equ$, "/"))): SolveSimple$ = Trim$(STR$(z1 / z2)): EXIT FUNCTION 255: IF INSTR(equ$, "+") <> 0 THEN z1 = VAL(MID$(equ$, 1, INSTR(equ$, "+") - 1)): z2 = VAL(MID$(equ$, INSTR(equ$, "+") + 1, LEN(equ$) - INSTR(equ$, "+"))): SolveSimple$ = Trim$(STR$(z1 + z2)): EXIT FUNCTION 256: IF INSTR(equ$, "-") <> 0 THEN z1 = VAL(MID$(equ$, 1, INSTR(equ$, "-") - 1)): z2 = VAL(MID$(equ$, INSTR(equ$, "-") + 1, LEN(equ$) - INSTR(equ$, "-"))): SolveSimple$ = Trim$(STR$(z1 - z2)): EXIT FUNCTION 257: 258: END IF 259: END FUNCTION 260: 261: FUNCTION Subt$ (nnn1$, nnn2$) 262: n1$ = nnn1$: n2$ = nnn2$ 263: 264: IF (INSTR(n2$, "-") <> 0 AND INSTR(n1$, "-") = 0) THEN Subt$ = Add$(n1$, RIGHT$(n2$, LEN(n2$) - INSTR(n2$, "-"))): EXIT FUNCTION 265: IF (INSTR(n1$, "-") <> 0 AND INSTR(n2$, "-") = 0) THEN Subt$ = "-" + Add$(n2$, RIGHT$(n1$, LEN(n1$) - INSTR(n1$, "-"))): EXIT FUNCTION 266: IF (INSTR(n1$, "-") <> 0 AND INSTR(n2$, "-") <> 0) THEN n1$ = RIGHT$(n1$, LEN(n2$) - INSTR(n2$, "-")): n2$ = RIGHT$(n2$, LEN(n2$) - INSTR(n2$, "-")): IsAnsNeg = 1 267: 268: IF IsGreater(n1$, n2$) = 2 THEN Neg = (1 + IsAnsNeg) MOD 2: dd1$ = n1$: dd2$ = n2$: n1$ = dd2$: n2$ = dd1$ 269: 270: IF INSTR(n1$, "-") <> 0 AND INSTR(n2$, "-") <> 0 THEN Neg = 1: n1$ = RIGHT$(n1$, LEN(n1$) - INSTR(n1$, "-")): n2$ = RIGHT$(n2$, LEN(n2$) - INSTR(n2$, "-")): Subt$ = "-" + Add$(n1$, n2$): EXIT FUNCTION 271: 272: 273: 274: IF INSTR(n1$, ".") <> 0 OR INSTR(n2$, ".") <> 0 THEN 275: IF INSTR(n1$, ".") = 0 THEN n1$ = n1$ + ".0" 276: IF INSTR(n2$, ".") = 0 THEN n2$ = n2$ + ".0" 277: IF INSTR(n1$, ".") > INSTR(n2$, ".") THEN n2$ = STRING$(INSTR(n1$, ".") - INSTR(n2$, "."), "0") + n2$ ELSE n1$ = STRING$(INSTR(n2$, ".") - INSTR(n1$, "."), "0") + n1$ 278: IF LEN(n1$) - INSTR(n1$, ".") > LEN(n2$) - INSTR(n2$, ".") THEN n2$ = n2$ + STRING$((LEN(n1$) - INSTR(n1$, ".")) - (LEN(n2$) - INSTR(n2$, ".")), "0") ELSE n1$ = n1$ + STRING$((LEN(n2$) - INSTR(n2$, ".")) - (LEN(n1$) - INSTR(n1$, ".")), "0") 279: Stor = LEN(n1$) - INSTR(n1$, ".") 280: IF INSTR(n1$, ".") <> 0 THEN n1$ = LEFT$(n1$, INSTR(n1$, ".") - 1) + RIGHT$(n1$, (LEN(n1$) - INSTR(n1$, "."))) 281: IF INSTR(n2$, ".") <> 0 THEN n2$ = LEFT$(n2$, INSTR(n2$, ".") - 1) + RIGHT$(n2$, (LEN(n2$) - INSTR(n2$, "."))) 282: ELSE 283: IF LEN(n1$) > LEN(n2$) THEN n2$ = STRING$(LEN(n1$) - LEN(n2$), "0") + n2$ ELSE n1$ = STRING$(LEN(n2$) - LEN(n1$), "0") + n1$ 284: END IF 285: 286: 287: FOR q = LEN(n1$) TO 1 STEP -1 288: 289: IF VAL(MID$(n1$, q, 1)) < VAL(MID$(n2$, q, 1)) THEN 290: Num1 = VAL(MID$(n1$, q, 1)) + 10 291: l = 0 292: DO 293: l = l + 1 294: Br$ = MID$(n1$, q - l, 1) 295: IF Br$ = "0" THEN MID$(n1$, q - l, 1) = "9" 296: LOOP UNTIL Br$ <> "0" 297: MID$(n1$, q - l, 1) = RTRIM$(LTRIM$(STR$(VAL(MID$(n1$, q - l, 1)) - 1))) 298: ELSE 299: Num1 = VAL(MID$(n1$, q, 1)) 300: END IF 301: sc = Num1 - VAL(MID$(n2$, q, 1)) 302: cc$ = Trim$(STR$(sc)) + cc$ 303: NEXT q 304: IF Neg = 1 THEN cc$ = "-" + cc$ 305: IF Stor <> 0 THEN cc$ = LEFT$(cc$, LEN(cc$) - Stor) + "." + RIGHT$(cc$, Stor) 306: 307: Subt$ = cc$ 308: 309: END FUNCTION 310: |