COMMON SZAM AS DOUBLE, MANT AS DOUBLE COMMON SY AS DOUBLE, SX AS DOUBLE, SX2 AS DOUBLE, SXY AS DOUBLE COMMON NEV AS DOUBLE, C0 AS DOUBLE, C1 AS DOUBLE, Y AS DOUBLE COMMON A AS DOUBLE, B AS DOUBLE, XI AS DOUBLE, YI AS DOUBLE COMMON isc AS DOUBLE, m AS DOUBLE, kicsi AS DOUBLE DIM SM(5) AS DOUBLE kicsi = 1E-39 SCREEN 12 DIM G(80, 100) AS DOUBLE CLS LET NYOMTAT = 0 COLOR 1 LET EM = 0 PRINT "Fggvnykzelts", "Mrsi pontokhoz", "Prbafggvnyekkel" DIM u(100) AS DOUBLE DIM v(100) AS DOUBLE LET m = 0 155 LET isc = 0 160 LET SY = 0 170 LET SX = 0 180 LET SX2 = 0 190 LET SXY = 0 200 GOSUB 400 LET diskm = 0 IF m <> 0 THEN GOTO 210 SELECT CASE kod CASE 21 GOSUB 7500 CASE 23 GOSUB 45 CASE 30 GOTO 380 END SELECT GOTO 160 210 SELECT CASE kod CASE 1 GOSUB 2000 CASE 2 GOSUB 2500 CASE 3 GOSUB 3000 CASE 4 GOSUB 3500 CASE 5 GOSUB 4000 CASE 6 GOSUB 4500 CASE 7 GOSUB 5000 CASE 15 GOSUB 9000 CASE 16 GOSUB 9500 CASE 20 GOSUB 7000 CASE 21 GOSUB 7500 CASE 22 GOSUB 7600 CASE 23 GOSUB 45 CASE 24 GOSUB 1600 CASE 25 GOSUB 1900 CASE 30 GOTO 380 END SELECT 219 IF diskm = 1 THEN GOTO 160 220 PRINT COLOR 7 225 PRINT "KER HIBASZAMITAST "; 230 INPUT BS$ 240 IF BS$ = "I" OR BS$ = "i" THEN GOTO 290 280 GOTO 160 290 GOSUB 550 350 GOTO 160 380 STOP GOTO 160 400 REM VALASZTEK CLS COLOR 1 PRINT " A KOZELITO FUGGVENY TIPUSA:" LOCATE 5, 1 COLOR 3 PRINT "1. Y=A*X+B 23. j sorzat bevitele " PRINT PRINT "2. Y=A*X^B 24. Pont elhagyasa " PRINT PRINT "3. Y=A*EXP(B*X) 25. Uj pont folvetele" PRINT PRINT "4. Y=X/(A+B*X) " PRINT PRINT "5. Y=+B*X^2" PRINT PRINT "6. Y=1/A+B*X^2" PRINT PRINT "7. Y=X/A+B*X^2" PRINT PRINT "15. Y=POLINOM" PRINT PRINT "16. Y=1/POLINOM 30. STOP " PRINT PRINT "20. Save Data" PRINT PRINT "21. Load data" PRINT PRINT "22. Reset Screen Data" INPUT kod RETURN 45 LOCATE 30, 1 COLOR 3 50 INPUT "Mrsi pontok szma:"; m IF m < 1 OR m > 99 THEN GOTO 45 70 FOR TIME = 0 TO 700: NEXT TIME 80 CLS 120 FOR I = 1 TO m 130 COLOR 3 LOCATE 30, 1 PRINT " " LOCATE 30, 1 PRINT "X("; I; ")="; INPUT u(I) LOCATE 30, 40 PRINT "Y("; I; ")="; INPUT v(I) COLOR 6 141 PRINT "X("; I; ")="; u(I); TAB(40); "Y("; I; ")="; v(I) 150 NEXT I RETURN 450 REM OSSZEGZES 460 LET SY = SY + YI 470 LET SX = SX + XI 475 LET SX2 = SX2 + XI * XI 480 LET SXY = SXY + XI * YI 485 RETURN 500 REM EGYENES 505 LET NEV = m * SX2 - SX * SX 510 IF ABS(NEV) > kicsi THEN GOTO 535 515 CLS 520 PRINT "NINCS MEGOLDAS,KEREK UJABB PONTOKAT (CONTINUE )" 525 STOP 530 GOTO 1900 535 LET C0 = (SY * SX2 - SX * SXY) / NEV 540 LET C1 = (m * SXY - SX * SY) / NEV 545 RETURN 550 REM HIBASZAMITAS 555 CLS COLOR 1 560 PRINT "A HIBASZAMITAS MODJA?" LOCATE 7, 1 COLOR 7 PRINT "(1) SZAMSZERUEN" LOCATE 9, 1 PRINT "(2) KEPERNYO GRAFIKAN" PRINT PRINT 570 INPUT HM 580 CLS 600 IF HM = 2 THEN GOTO 720 610 LOCATE 1, 9 COLOR 1 PRINT "HIBASZAMITAS:" LOCATE 4, 1 COLOR 8 PRINT " I"; TAB(7); "X(I)-ADOTT"; TAB(23); "Y(I)-ADOTT"; TAB(43); "H(I)-%"; TAB(57); "Y(I)-SZAMITOTT" COLOR 7 615 PRINT 620 FOR I = 1 TO m 630 GOSUB 1400 640 IF ABS(v(I)) < kicsi THEN GOTO 670 650 LET H = 100 * (Y - v(I)) / v(I) 655 PRINT 660 PRINT I; TAB(6); u(I); TAB(23); v(I); TAB(40); H; TAB(57); Y IF I / 10 = INT(I / 10) THEN PRINT "Nyomj egy gombot..." WHILE INKEY$ = "" WEND CLS COLOR 8 PRINT " I"; TAB(7); "X(I)-ADOTT"; TAB(23); "Y(I)-ADOTT"; TAB(43); "H(I)-%"; TAB(57); "Y(I)-SZAMITOTT" END IF COLOR 7 670 NEXT I PRINT 680 PRINT "RENDBEN ? (I/N)" 690 INPUT BS$ 700 IF BS$ = "I" THEN GOTO 160 710 RETURN 720 GOSUB 1250 725 LET TU = 639 / DU 726 LET TV = 479 / DV COLOR 6 730 FOR I = 0 TO 639 740 PSET (I, 479) 750 NEXT I 760 FOR I = 0 TO 479 770 PSET (0, 479 - I) 780 NEXT I COLOR 15 790 FOR I = 1 TO m 800 LET X = (u(I) - UMN) * TU 810 LET Y = (v(I) - VMN) * TV 820 CIRCLE (X, 479 - Y), 2 830 NEXT I 840 FOR I = 0 TO 639 850 LET UI = UMN + I / TU 860 GOSUB 1500 870 LET Y = (Y - VMN) * TV 880 IF Y < 0 OR Y > 479 THEN GOTO 900 COLOR 10 890 PSET (I, 479 - Y) 900 NEXT I LOCATE 1, 60 COLOR 1 PRINT "Nyomj egy gombot" DO AS$ = INKEY$ IF AS$ <> "" THEN GOTO 160 LOOP 903 STOP 904 CLS 910 PRINT "RENDBEN ? (I/N)" 920 INPUT BS$ 930 IF BS$ = "I" THEN STOP 940 RETURN 1250 REM ELTOLAS 1252 IF isc > 0 THEN GOTO 1360 1253 LET isc = 1 1255 CLS 1260 INPUT "MAX X="; UMX 1280 INPUT "MAX Y="; VMX 1300 INPUT "MIN X="; UMN 1320 INPUT "MIN Y="; VMN 1340 LET DU = UMX - UMN 1350 LET DV = VMX - VMN 1355 CLS 1360 RETURN 1400 REM FUGGVENYERTEK-U(I) 1410 IF kod = 1 THEN LET Y = A * u(I) + B 1415 IF kod = 2 THEN LET Y = A * u(I) ^ B 1420 IF kod = 3 THEN LET Y = A * EXP(B * u(I)) 1425 IF kod = 4 THEN LET Y = u(I) / (A + B * u(I) * u(I)) 1430 IF kod = 5 THEN LET Y = SQR(A + B * u(I) * u(I)) 1435 IF kod = 6 THEN LET Y = 1 / SQR(A + B * u(I) * u(I)) 1440 IF kod = 7 THEN LET Y = u(I) / SQR(A + B * u(I) * u(I)) 1489 IF kod < 15 THEN GOTO 1495 1490 LET Y = 0 1491 FOR J = 1 TO EM + 1 1492 LET Y = Y + G(J, EM + 2) * u(I) ^ (J - 1) 1493 NEXT J 1494 IF kod = 16 THEN LET Y = 1 / Y 1495 RETURN 1500 REM FVEREK -UI 1510 IF kod = 1 THEN LET Y = A * UI + B 1515 IF kod = 2 THEN LET Y = A * UI ^ B 1520 IF kod = 3 THEN LET Y = A * EXP(B * UI) 1525 IF kod = 4 THEN LET Y = UI / (A + B * UI) 1530 IF kod = 5 THEN LET Y = SQR(A + B * UI * UI) 1535 IF kod = 6 THEN LET Y = 1 / SQR(A + B * UI * UI) 1540 IF kod = 7 THEN LET Y = UI / SQR(A + B * UI * UI) 1589 IF kod < 15 THEN GOTO 1595 1590 LET Y = 0 1591 FOR J = 1 TO EM + 1 1592 LET Y = Y + G(J, EM + 2) * UI ^ (J - 1) 1593 NEXT J 1594 IF kod = 16 THEN LET Y = 1 / Y 1595 RETURN 1600 REM PONTELHAGYAS 1610 CLS LET diskm = 1 1620 PRINT "AZ ELHAGYANDO PONTOK SZAMA ?" 1630 INPUT JM 1635 LOCATE 1, 28 PRINT "N="; JM 1640 DIM Z(JM) 1645 PRINT 1650 PRINT "AZ ELHAGYANDO PONTOK SORSZAMAI ?" 1660 FOR J = 1 TO JM 1670 INPUT Z(J) 1680 PRINT Z(J) 1690 NEXT J 1700 LET MM = m - JM 1710 DIM P(MM) AS DOUBLE 1720 DIM R(MM) AS DOUBLE 1730 LET K = 0 1740 FOR I = 1 TO m 1750 LET K = K + 1 1760 FOR J = 1 TO JM 1770 IF I = Z(J) THEN GOTO 1820 1780 NEXT J 1790 LET P(K) = u(I) 1800 LET R(K) = v(I) 1810 GOTO 1830 1820 LET K = K - 1 1830 NEXT I 1840 LET m = MM 1870 FOR I = 1 TO m 1880 LET u(I) = P(I) 1885 LET v(I) = R(I) 1890 NEXT I 1891 CLS 1895 RETURN 1900 REM UJ PONTOK LET diskm = 1 1905 CLS 1910 PRINT "AZ UJ PONTOK SZAMA ?" 1915 INPUT JM 1916 LOCATE 1, 20 PRINT "N="; JM 1917 PRINT 1920 DIM P(m + (JM)) AS DOUBLE 1925 DIM R(m + JM) AS DOUBLE 1930 PRINT "AZ UJ PONTOK KOORDINATAI ?" 1931 PRINT 1935 FOR J = 1 TO JM 1940 INPUT P(m + J) 1945 INPUT R(m + J) 1946 PRINT P(m + J), R(m + J) 1950 NEXT J 1955 FOR I = 1 TO m 1960 LET P(I) = u(I) 1965 LET R(I) = v(I) 1968 NEXT I 1970 LET m = m + JM 1979 FOR I = 1 TO m 1980 LET u(I) = P(I) 1985 LET v(I) = R(I) 1990 NEXT I 1991 CLS 1995 RETURN: REM GOTO 160 2000 REM Y=A*X+B 2010 CLS COLOR 4 2030 PRINT "Y=A*X+B" 2035 PRINT 2040 FOR I = 1 TO m 2050 LET XI = u(I) 2060 LET YI = v(I) 2070 GOSUB 450 2080 NEXT I 2090 GOSUB 500 2100 LET A = C1 2110 LET B = C0 COLOR 15 2120 PRINT "Y="; A; "*X+"; B 2125 PRINT PRINT "A="; A; TAB(40); LET SZAM = A: LET NYOMTAT = 1 GOSUB 7610 PRINT PRINT "B="; B; TAB(40); LET SZAM = B: LET NYOMTAT = 1 GOSUB 7610 2130 RETURN 2500 REM Y=A*X^B 2510 CLS COLOR 1 2520 PRINT "Y=A*X^B" 2525 PRINT 2530 FOR I = 1 TO m 2535 IF u(I) <= 0 OR v(I) <= 0 THEN GOTO 2566 2540 LET XI = LOG(u(I)) 2550 LET YI = LOG(v(I)) 2560 GOSUB 450 2565 GOTO 2570 2566 PRINT "X("; I; ")<= 0 VAGY Y("; I; ")<= 0" 2567 STOP 2570 NEXT I 2580 GOSUB 500 2590 LET A = EXP(C0) 2600 LET B = C1 2610 LOCATE 3, 1 COLOR 15 PRINT "Y="; A; "*X^"; B 2615 PRINT 2620 RETURN 3000 REM Y=A*EXP(B*X) 3010 CLS COLOR 1 3020 PRINT "Y=A*EXP(B*X)" 3025 PRINT 3030 FOR I = 1 TO m 3035 IF v(I) <= 0 THEN GOTO 3066 3040 LET XI = u(I) 3050 LET YI = LOG(v(I)) 3060 GOSUB 450 3065 GOTO 3070 3066 PRINT "Y("; I; ")<= 0" 3067 STOP 3070 NEXT I 3080 GOSUB 500 3090 LET A = EXP(C0) 3100 LET B = C1 3110 LOCATE 3, 1 COLOR 15 PRINT "Y="; A; "*EXP("; B; "*X)" 3115 PRINT 3120 RETURN 3500 REM Y=X/(A+B*X) 3510 CLS COLOR 1 3520 PRINT "Y=X/(A+B*X)" 3525 PRINT 3530 FOR I = 1 TO m 3535 IF v(I) = 0 THEN GOTO 3580 3540 LET XI = u(I) 3550 LET YI = XI / v(I) 3560 GOSUB 450 3570 GOTO 3600 3580 PRINT "Y("; I; ")=0" 3590 STOP 3600 NEXT I 3610 GOSUB 500 3620 LET A = C0 3630 LET B = C1 COLOR 15 LOCATE 3, 1 3640 PRINT "Y=X/("; A; "+"; C; "*X)" 3645 PRINT 3650 RETURN 4000 REM Y=SQR(A+B*X^2) 4010 CLS COLOR 1 4020 PRINT "Y=SQR(A+B*X^2)" 4030 PRINT 4040 FOR I = 1 TO m 4050 LET XI = u(I) * u(I) 4060 LET YI = v(I) * v(I) 4070 GOSUB 450 4080 NEXT I 4090 GOSUB 500 4100 LET A = C0 4110 LET B = C1 COLOR 15 4120 PRINT "Y=SQR("; A; "+"; B; "*X^2)" 4130 PRINT 4140 RETURN 4500 REM Y=1/SQR(A+B*X^2) 4510 CLS COLOR 1 4520 PRINT "Y=1/SQR(A+B*X^2)" 4530 PRINT 4540 FOR I = 1 TO m 4550 IF ABS(v(I)) < kicsi THEN GOTO 4600 4560 LET XI = u(I) * u(I) 4570 LET YI = 1 / v(I) / v(I) 4580 GOSUB 450 4590 GOTO 4630 4600 PRINT "ABS Y("; I; ")<"; kicsi 4620 STOP 4630 NEXT I 4640 GOSUB 500 4650 LET A = C0 4660 LET B = C1 4670 LOCATE 3, 1 COLOR 15 PRINT "Y=1/SQR("; A; "+"; B; "*X^2" 4680 PRINT 4690 RETURN 5000 REM Y=X/SQR(A+B*X^2) 5010 CLS COLOR 1 5020 PRINT "Y=X/SQR(A+B*X^2)" 5030 PRINT 5040 FOR I = 1 TO m 5050 IF ABS(v(I)) < kicsi OR ABS(u(I)) < kicsi THEN GOTO 5100 5060 LET XI = 1 / u(I) / u(I) 5070 LET YI = 1 / v(I) / v(I) 5080 GOSUB 450 5090 GOTO 5130 5100 PRINT "ABS Y("; I; ") OR ABS X("; I; ")"; kicsi 5120 STOP 5130 NEXT I 5140 GOSUB 500 5150 LET A = C1 5160 LET B = C0 5170 LOCATE 3, 1 COLOR 15 PRINT "Y=X/SQR("; A; "+"; B; "*X^2" 5180 PRINT 5190 RETURN REM save data 7000 CLS PRINT "Adatok elmentese diskre" PRINT INPUT "Enter Filename: "; N$ OPEN N$ FOR OUTPUT AS #1 PRINT "Mi legyen az adathalmaz cime"; INPUT cim$ CLS PRINT cim$ PRINT #1, cim$ PRINT m PRINT #1, m FOR kf = 1 TO m PRINT u(kf), v(kf) PRINT #1, u(kf), v(kf) NEXT kf CLOSE #1 PRINT "Az adatok a disken vannak!" LET diskm = 1 PRINT "Nyomj egy gombot..." WHILE INKEY$ = "" WEND RETURN REM load 7500 PRINT "Adatok betoltese diskrol" PRINT INPUT "Enter Filename: "; N$ OPEN N$ FOR INPUT AS #1 INPUT #1, cim$ CLS PRINT cim$ INPUT #1, m PRINT m FOR kf = 1 TO m INPUT #1, u(kf), v(kf) PRINT u(kf), v(kf) NEXT kf PRINT "Az adatok a diskrol betoltve!" CLOSE #1 LET diskm = 1 PRINT "Nyomj egy gombot..." WHILE INKEY$ = "" WEND RETURN 7600 CLS PRINT "A keprnyo parameterk torolve!" LET isc = 0 LET diskm = 1 RETURN REM KONVERTALAS SPECTRUM FORMATUMRA (40 BITES 2-ES KOMP. SZAM) REM BE: SZAM - KONVERTALANDO SZAM REM KI: SM(5) TOMBEN AZ 5 BYTE 7610 KIT = LOG(ABS(SZAM)) / LOG(2) KITE = INT(KIT) + 1 MANT = SZAM / 2 ^ KITE SM(1) = 128 + KITE S$ = "" MANT = ABS(MANT) FOR F = 0 TO 3 DIGIT = 0 FOR FG = 0 TO 7 LET BIT = 0 IF MANT - 2 ^ -(FG + F * 8 + 1) >= 0 THEN MANT = MANT - 2 ^ -(FG + F * 8 + 1): LET BIT = 1 IF (F * 8 + FG = 0) AND (SGN(SZAM) <> -1) THEN BIT = 0 DIGIT = DIGIT + 2 ^ (7 - FG) * BIT IF BIT = 0 THEN S$ = S$ + "0" ELSE S$ = S$ + "1" NEXT FG SM(F + 2) = DIGIT NEXT F IF NYOMTAT = 1 THEN FOR F = 1 TO 5: PRINT SM(F); ","; : NEXT F RETURN 9000 REM POLINOM 9010 CLS COLOR 1 9020 PRINT "POLINOM, Y=A0+A1*X+A2*X^2+...+AN*X^N" 9030 LOCATE 5, 1 COLOR 3 PRINT "FOKSZAM N="; 9040 INPUT EM 9050 LOCATE 5, 11 PRINT EM; 9060 LET N1 = m 9065 FOR TIME = 0 TO 500: NEXT TIME 9090 FOR J = 1 TO EM + 2 9100 FOR K = 1 TO EM + 1 9110 LET G(K, J) = 0 9120 NEXT K 9130 NEXT J 9140 FOR J = 1 TO EM + 1 9150 FOR K = J TO (EM + 1) 9160 FOR I = 1 TO N1 9170 LET G(J, K) = G(J, K) + u(I) ^ (J + K - 2) 9180 NEXT I 9190 LET G(K, J) = G(J, K) 9200 NEXT K 9210 NEXT J 9220 FOR J = 1 TO EM + 1 9230 FOR I = 1 TO N1 9240 LET G(J, EM + 2) = G(J, EM + 2) + v(I) * u(I) ^ (J - 1) 9250 NEXT I 9260 NEXT J 9270 LET N = EM + 1 9280 GOSUB 9400 PRINT TAB(18); "EGYUTTHATOK:" 9310 FOR J = 1 TO EM + 1 Q = J - INT(J / 2) * 2 Q = 1 - Q COLOR (Q + 6) PRINT J - 1; TAB(18); G(J, EM + 2); TAB(50); LET SZAM = G(J, EM + 2) LET NYOMTAT = 1 GOSUB 7610: PRINT NEXT J COLOR 8 PRINT 9340 RETURN 9400 REM SUBLINEGY 9405 FOR I = 1 TO N 9407 IF ABS(G(I, I)) < kicsi THEN LET G(I, I) = kicsi 9410 FOR K = I + 1 TO N + 1 9415 LET G(I, K) = G(I, K) / G(I, I) 9420 NEXT K 9425 FOR J = I + 1 TO N 9430 FOR K = I + 1 TO N + 1 9435 LET G(J, K) = G(J, K) - G(J, I) * G(I, K) 9440 NEXT K 9445 NEXT J 9450 NEXT I 9455 FOR I = N - 1 TO 1 STEP -1 9460 FOR K = I + 1 TO N 9465 LET G(I, N + 1) = G(I, N + 1) - G(I, K) * G(K, N + 1) 9470 NEXT K 9475 NEXT I 9480 RETURN 9500 REM Y=1/(POLINOM) 9510 CLS COLOR 1 9520 PRINT "Y=1/(POLINOM)" 9530 FOR I = 1 TO m 9540 IF v(I) = 0 THEN GOTO 9565 9559 LET v(I) = 1 / v(I) 9560 GOTO 9570 9565 LET v(I) = 1E+30 9570 NEXT I 9580 GOSUB 9030 9590 FOR I = 1 TO m 9600 LET v(I) = 1 / v(I) 9610 NEXT I 9620 RETURN