50 REM autor : kai boehnke 60 REM ort : d-5000 koeln 71,epprather weg 16,tel 0221-799551 70 REM datum : 17.08.1986 80 REM ------- 90 REM eingabe 95 REM ------- 100 CLS : PRINT CHR$(142): PRINT TAB(14); , "determinante": PRINT TAB(14); , "------------": PRINT 110 INPUT " reihenzahl (1-113)"; kk: f = 1 120 IF kk >= 1 AND kk <= 113 AND kk - INT(kk) = 0 THEN GOTO 330: ELSE PRINT "‘‘": GOTO 110 130 k1 = kk - 1: DIM r(k1, k1): PRINT " eingabe der determinanten-glieder r:" 140 FOR i = 0 TO k1: FOR j = 0 TO k1 150 PRINT " r ("; i + 1; " ,"; j + 1; " ) ="; : PRINT " "; : INPUT r(i, j): f = 2: GOTO 330 170 NEXT j: NEXT i 180 PRINT "" 190 f$ = " ": PRINT " korrektur einzelner glieder (j/n)?"; : f$ = INPUT$(1): PRINT f$: IF f$ = "j" THEN PRINT : GOTO 370: ELSE IF f$ = "n" THEN GOTO 530 200 IF f$ = CHR$(13) THEN PRINT "‘‘‘": GOTO 190: ELSE PRINT "‘‘": GOTO 190 300 REM --------------- 310 REM fehlerkorrektur 320 REM --------------- 330 f$ = " ": PRINT TAB(2); "fehler (j/n) ?"; : PRINT f$; : f$ = INPUT$(1): PRINT ""; f$ 340 IF f$ = "j" THEN PRINT "‘‘‘": ON f GOTO 110, 150: ELSE IF f$ = "n" THEN PRINT "‘‘": ON f GOTO 130, 170 350 IF f$ = CHR$(13) THEN PRINT "‘‘‘": GOTO 330: ELSE PRINT "‘‘": GOTO 330 360 PRINT "" 370 INPUT " zeile (1.index)"; i: i = i - 1 380 IF i < 0 OR i > k1 OR i - INT(i) <> 0 THEN PRINT "‘‘": GOTO 370 390 INPUT " spalte (2.index)"; j: j = j - 1 400 IF j < 0 OR j > k1 OR j - INT(j) <> 0 THEN PRINT "‘‘": GOTO 390 410 PRINT " r ("; i + 1; ","; j + 1; ") ="; : INPUT r(i, j): PRINT : GOTO 190 500 REM --------------- 510 REM kontrollausgabe 520 REM --------------- 530 PRINT 540 f$ = " ": PRINT " kontrollausgabe / rechnung (k/r)?"; : f$ = INPUT$(1): PRINT f$: IF f$ = "r" THEN GOTO 630: ELSE IF f$ = "k" THEN GOTO 560 550 IF f$ = CHR$(13) THEN PRINT "‘‘‘": GOTO 540: ELSE PRINT "‘‘": GOTO 540 560 PRINT : l = 0: FOR i = 0 TO k1: FOR j = 0 TO k1: l = l + 1 570 PRINT " r ("; i + 1; ","; j + 1; ") ="; : PRINT TAB(20); r(i, j) 580 IF l / 20 - INT(l / 20) = 0 THEN PRINT " weiter mit beliebiger taste !": w$ = INPUT$(1) 590 NEXT j, i: PRINT : GOTO 190 600 REM ------------------------------------------------------------------------ 610 REM berechnung nach gauss durch umformung in eine obere dreiecksdeterminante 620 REM ------------------------------------------------------------------------ 630 IF kk = 1 THEN dt = r(0, 0): GOTO 910 640 FOR l = 0 TO kk - 2 650 IF r(l, l) <> 0 THEN GOTO 780 660 REM ------------------------------- 670 REM aufaddierung von spalte l und k 680 REM ------------------------------- 690 n = l 700 n = n + 1 710 IF n > k1 THEN dt = 0: GOTO 910 720 IF r(l, n) = 0 GOTO 700 730 FOR j = 0 TO k1 740 r(j, l) = r(j, l) + r(j, n): NEXT j 750 REM ----------------------------------------------------- 760 REM aufaddierung der zeilen i und l so,dass r(i,l)=0 wird 770 REM ----------------------------------------------------- 780 FOR i = l + 1 TO k1 790 f = r(i, l) / r(l, l) 800 FOR k = 0 TO k1 810 r(i, k) = r(i, k) - f * r(l, k) 820 NEXT k, i, l 830 REM ----------------------------------------------- 840 REM multiplizieren der elemente der hauptdiagonalen 850 REM ----------------------------------------------- 860 dt = 1: FOR n = 0 TO k1 870 dt = dt * r(n, n): NEXT n 880 REM ------------------------------------------ 890 REM ausgabe des ergebnisses mit unterstreichen 900 REM ------------------------------------------ 910 PRINT " die determinante betraegt:" 920 PRINT : PRINT TAB(10); dt 930 IF dt >= 0 THEN ns = 1: ELSE ns = 0 940 PRINT TAB(9 + ns); 950 FOR i = 1 TO LEN(STR$(dt)) - ns + 2: PRINT "="; : NEXT i 960 END