Super - Arithmetik
********************
1 ... Addition
2 ... Subtraktion
3 ... Multiplikation
4 ... Division
5 ... Potenzieren
6 ... Fakultaeten
7 ... Blocklaenge
8 ... GGT
9 ... Brüche add/sub
Zeichensatz UTF-8+Z1013()+CTRL()-ohne Umlaute(äöüß)
10 GOTO 1000
600 W$="Basis ":GOSUB 1100:B=VAL(Z$)
610 W$="Exponent":GOSUB 1100:N=VAL(Z$)
620 R=INT(N*LN(B)/LN(10)/5)+1:U=0:E(1)=1
630 FOR K=1 TO N:FOR I=1 TO R
640 H=E(I)*B+U:IF H<-100000 THEN U=0:GOTO 660
650 U=INT(H/100000):H=H-U*100000
660 E(I)=INT(H+.5):NEXT:NEXT
670 A$="":FOR A=1 TO R:B$=MID$(STR$(E(A)),2)
680 A$=RIGHT$("0000"+B$,5)+A$:NEXT
690 FOR A=1 TO LEN(A$):E(A)=VAL(MID$(A$,A,1)):NEXT:N=A-1
700 PRINT "Ergebnis : ";:GOTO 1140
710 W$="1. Faktor":GOSUB 1100:A$=Z$
720 W$="2. Faktor":GOSUB 1100:B$=Z$:N=LEN(A$):M=LEN(B$)
730 IF M>N THEN B$=A$:A$=Z$:J=M:M=N:N=J
740 FOR I=0 TO N+M:E(I)=0:NEXT
750 FOR J=M TO 1 STEP-1:V=VAL(MID$(B$,J,1))
760 K=0:IF V=0 THEN NEXT:GOTO 800
770 FOR I=N TO 1 STEP-1:U=VAL(MID$(A$,I,1))
780 T=U*V+E(I+J)+K:K=INT(T/10)
790 E(I+J)=T-K*10:NEXT:E(I+J)=K:NEXT
800 A1=1:A2=N+M:PRINT "Produkt : ";:GOTO 1150
810 W$="Minuend ":GOSUB 1100:A$=Z$
820 W$="Subtrahend":GOSUB 1100:B$=Z$:GOSUB 900
830 IF J=1 THEN PRINT "Minuend < Subtrahend !":GOTO 1200
840 J=0:FOR A=N TO 1 STEP-1:A1=VAL(MID$(A$,A,1)):B1=VAL(MID$(B$,A,1))+J
850 J=0:IF A1-B1<0 THEN J=1:A1=A1+10
860 E(A)=A1-B1:NEXT:IF J=1 THEN PRINT "Minuend < Subtrahend !":GOTO 1200
870 PRINT "Differenz : ";:GOTO 1140
880 W$="1. Summand":GOSUB 1100:A$=Z$
890 W$="2. Summand":GOSUB 1100:B$=Z$:GOSUB 900:GOTO 930
900 J=0:N=LEN(A$):M=LEN(B$):Z=M:IF M>N THEN M=N:N=Z:B$=A$:A$=Z$:J=1
910 IF N>M THEN B$=STRING$(N-M,"0")+B$
920 RETURN
930 J=0:FOR A=N TO 1 STEP-1:E=VAL(MID$(A$,A,1))+VAL(MID$(B$,A,1))+J:J=0
940 IF E<10 THEN E(A)=E:NEXT:E(0)=J:PRINT "Summe : ";:GOTO 1140
950 J=1:E=E-10:E(A)=E:GOTO 940
960 INPUT "Neue Blocklaenge :";BL:PRINT:IF BL<0 OR BL>INT(BL)THEN 960:ELSE RETURN
1000 CLEAR 800:FOR A=0 TO 9:READ W$(A):NEXT:DIM E(500):BL=3
1010 N=0:GOSUB 1060:FOR N=1 TO 9:PRINT " "N "... "W$(N):PRINT:NEXT
1020 PRINT:PRINT:PRINT "Tipp die Ziffer deiner Wahl."
1030 I$=INKEY$:IF I$=""THEN 1030
1040 IF I$<"1"OR I$>"9"THEN WINDOW:CLS:END
1050 N=VAL(I$):GOSUB 1060:ON N GOSUB 880,810,710,4,600,6,960,1300,1400:GOTO 1010
1060 WINDOW:CLS:L=LEN(W$(N)):L2=16-INT(L/2+.5):PRINT AT(0,L2);W$(N)
1070 PRINT AT(1,L2-1);STRING$(L+2,"*"):WINDOW 4,31,0,31:RETURN
1080 DATA Super - Arithmetik,Addition,Subtraktion,Multiplikation
1090 DATA Division,Potenzieren,Fakultaeten,Blocklaenge,GGT,"Br}che add/sub"
1100 PRINT W$;:INPUT " :";Z$:PRINT:A=0:IF Z$=""THEN 1100
1110 A=A+1:IF A>LEN(Z$)THEN RETURN
1120 IF MID$(Z$,A,1)>" "THEN 1110
1130 Z$=LEFT$(Z$,A-1)+MID$(Z$,A+1):A=A-1:GOTO 1110
1140 A1=0:A2=N
1150 J=0:FOR A=A1 TO A2
1160 IF E(A)=0 AND J=0 THEN NEXT
1170 IF BL=0 OR J=0 THEN 1190
1180 IF INT((A2-A+1)/BL)=(A2-A+1)/BL THEN PRINT " ";
1190 J=1:PRINT MID$(STR$(E(A)),2);:NEXT
1200 PRINT:PRINT:PRINT:PRINT TAB(23);">RETURN<"
1210 I$=INKEY$:IF I$<>CHR$(13)THEN 1210:ELSE RETURN
1300 CLS:INPUT "1. Zahl :";A
1310 INPUT "2. Zahl :";B:GOSUB 1350:PRINT
1320 PRINT "GGT :";GT:PRINT
1330 PRINT "Z1/GGT :";A:PRINT "Z2/GGT :";B
1340 GOTO 1200
1350 A=ABS(A):B=ABS(B):AS=A:BS=B
1360 R=A-B*INT(A/B):IF R=0 THEN GT=B:A=AS/GT:B=BS/GT:RETURN
1370 A=B:B=R:GOTO 1360
1400 PRINT "Add. / Subtr. (+/-) : ";
1410 A$=INKEY$:IF A$<>"+"AND A$<>"-"THEN 1410
1420 PRINT A$:PRINT
1430 INPUT "1.Bruch: Z{hler :";A
1440 INPUT " Nenner :";B
1450 GOSUB 1350:A1=A:B1=B:PRINT
1460 INPUT "2.Bruch: Z{hler :";A
1470 INPUT " Nenner :";B
1480 GOSUB 1350:A2=A:B2=B:PRINT
1490 IF A$="-"THEN 1510
1500 Z=A1*B2+A2*B1:GOTO 1520
1510 Z=A1*B2-A2*B1
1520 S=SGN(Z):N=B1*B2:A=Z:B=N:GOSUB 1350
1530 PRINT:X=A1:GOSUB 1700:PRINT " ";:X=A2:GOSUB 1700
1540 X=A*S:GOSUB 1700
1550 PRINT "--------- ";A$;" ---------=---------"
1560 X=B1:GOSUB 1700:PRINT " ";:X=B2:GOSUB 1700:X=B:GOSUB 1700:PRINT:GOTO 1200
1700 Z$=RIGHT$(" "+STR$(X),9):PRINT Z$;" ";:RETURN