home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1985-04-15 | 2.1 KB | 111 lines |
- 0 CLS:PRINT
- 10 PRINT "COORDINATE PLOT"
- 20 PRINT
- 30 DIM X(100),Y(100)
- 40 PRINT "X-AXIS: LEFT ENDPOINT, RIGHT ENDPOINT, INCREMENT";
- 50 INPUT A1,A2,A3
- 60 PRINT "Y-AXIS: LOWER ENDPOINT, UPPER ENDPOINT, INCREMENT";
- 70 INPUT B1,B2,B3
- 80 B2 = (B2 - B1) / B3
- 90 IF B2 < = 70 THEN 120
- 100 PRINT "Y-RANGE TOO LARGE"
- 110 GOTO 60
- 120 PRINT "NUMBER OF POINTS TO BE PLOTTED";
- 130 INPUT N
- 140 IF N = 0 THEN 1070
- 150 IF N < = 99 THEN 180
- 160 PRINT "TOO MANY POINTS"
- 170 GOTO 120
- 180 FOR I = 1 TO N
- 190 IF I > 1 THEN 220
- 200 PRINT "COORDINATES OF POINT ";I;
- 210 GOTO 230
- 220 PRINT " POINT ";I;
- 230 INPUT X(I),Y(I)
- 240 X(I) = INT ((X(I) - A1) / A3 + 0.5)
- 250 Y(I) = INT ((Y(I) - B1) / B3 + 0.5)
- 260 NEXT I
- 270 Y(N + 1) = INT (B2 + 0.5) + 1
- 280 X(N + 1) = INT ((A2 - A1) / A3 + 0.5) + 1
- 290 PRINT
- 300 PRINT "INTERSECTION OF AXES AT (";A1;",";B1;")"
- 310 PRINT
- 320 FOR J = 1 TO N
- 330 FOR I = 1 TO N - J
- 340 A = X(I)
- 350 B = Y(I)
- 360 C = X(I + 1)
- 370 D = Y(I + 1)
- 380 IF A < C THEN 430
- 390 X(I) = C
- 400 Y(I) = D
- 410 X(I + 1) = A
- 420 Y(I + 1) = B
- 430 NEXT I
- 440 NEXT J
- 450 T = 1
- 460 FOR P = 0 TO N - 1
- 470 IF X(P + 1) = 0 THEN 490
- 480 NEXT P
- 490 FOR I = 0 TO INT ((A2 - A1) / A3 + 0.5)
- 500 T = T + P
- 510 P = 0
- 520 IF T > N THEN 540
- 530 IF X(T) = I THEN 590
- 540 IF I = 0 THEN 570
- 550 PRINT "*";
- 560 GOTO 1040
- 570 S = N + 1
- 580 GOTO 920
- 590 FOR L = T TO N
- 600 IF X(L) > X(T) THEN 630
- 610 P = P + 1
- 620 NEXT L
- 630 IF P = 1 THEN 730
- 640 FOR J = 1 TO P
- 650 FOR L = 1 TO P - J
- 660 D = Y(T + L - 1)
- 670 B = Y(T + L)
- 680 IF D < = B THEN 710
- 690 Y(T + L - 1) = B
- 700 Y(T + L) = D
- 710 NEXT L
- 720 NEXT J
- 730 FOR L = 0 TO P - 1
- 740 Z = Y(T + L)
- 750 IF Z > = 0 THEN 770
- 760 NEXT L
- 770 IF I = 0 THEN 910
- 780 IF Z = 0 THEN 800
- 790 PRINT "*";
- 800 IF L = P - 1 THEN 870
- 810 FOR J = L TO P - 1
- 820 IF Z > B2 THEN 1040
- 830 IF Y(T + J) = Z THEN 860
- 840 PRINT TAB( Z);"+";
- 850 Z = Y(T + J)
- 860 NEXT J
- 870 IF Z < 0 THEN 1040
- 880 IF Z > B2 THEN 1040
- 890 PRINT TAB( Z);"+";
- 900 GOTO 1040
- 910 S = T + L
- 920 FOR J = 0 TO B2
- 930 IF Y(S) < > J THEN 1010
- 940 PRINT "+";
- 950 FOR K = S TO T + P - 1
- 960 IF Y(K) = Y(S) THEN 990
- 970 S = K
- 980 GOTO 1020
- 990 NEXT K
- 1000 GOTO 1020
- 1010 PRINT "*";
- 1020 NEXT J
- 1030 PRINT "Y";
- 1040 PRINT
- 1050 NEXT I
- 1060 PRINT "X"
- 1065 PRINT "Press any key to return to menu."
- 1069 A$=INKEY$: IF A$="" THEN 1069
- 1070 RUN "MATH"
-