LET NUMBER=4 !人数 DIM HEIGHT(NUMBER) !身長を格納する配列 DIM WEIGHT(NUMBER) !体重を格納する配列
PRINT NUMBER;"人の身長と体重を入力します。" PRINT "身長は小数点第1位まで表記してね!" PRINT "身長170.0cmの人を1人入れてね!" FOR I=1 TO NUMBER PRINT I;"人目いきまーす。" INPUT PROMPT "身長は? ":HEIGHT(I) INPUT PROMPT "体重は? ":WEIGHT(I) NEXT I
PRINT "身長170cm以上の人の人数と体重の平均を求めます。" LET HNUM=0 !身長170cm以上の人の人数 LET WSUM=0 !体重の合計 FOR I=1 TO NUMBER IF HEIGHT(I)>=170 THEN !身長170cm以上なら LET HNUM=HNUM+1 !人数を加算 LET WSUM=WSUM+WEIGHT(I) !体重を加算 END IF NEXT I LET WAVG=WSUM/HNUM !体重の平均 PRINT "身長170cm以上の人は";HNUM;"人です。" PRINT "その人たちの体重の平均は";WAVG;"kgです。"
PRINT "体重68kg未満の人の人数と身長の平均を求めます。" LET WNUM=0 !体重68kg未満の人の人数 LET HSUM=0 !身長の合計 FOR I=1 TO NUMBER IF WEIGHT(I)<68 THEN !体重68kg未満なら LET WNUM=WNUM+1 !人数を加算 LET HSUM=HSUM+HEIGHT(I) !身長を加算 END IF NEXT I LET HAVG=HSUM/WNUM !身長の平均 PRINT "体重68kg未満の人は";WNUM;"人です。" PRINT "その人たちの身長の平均は";HAVG;"cmです。"
REM 10人の身長と体重を測定する。(身長は小数点第1位まで表記) REM (ただし、170.0cmの人を1人入れよ) REM 身長データ DATA 170.0,150.0,160.0,169.9,170.5,180.6,190.5,200.6,300.9,400.5 READ HEIGHT(1),HEIGHT(2),HEIGHT(3),HEIGHT(4),HEIGHT(5)...(ry REM 体重データ (ry
あるいは REM 1人目 DATA 170.0,69 READ HEIGHT(1), WEIGHT(1) REM 2人目 (ry
HEIGHT,WEIGHTはもっと短い変数でもいいかもね。
あと、配列の基数がデフォルトで1でない環境では DIM HEIGHT(1 TO 10) みたいに宣言するか、 FOR I=1 TO NUMBER-1 みたいにしなきゃいけません。
>>17 >あと、配列の基数がデフォルトで1でない環境では >DIM HEIGHT(1 TO 10) みたいに宣言するか、 >FOR I=1 TO NUMBER-1 みたいにしなきゃいけません。
訂正。
配列の基数がデフォルトで1でない環境では (1) DIM HEIGHT(1 TO 10) みたいに宣言するか、 (2) OPTION BASE 1 と宣言するか、 (3) プログラム中の1で始まっている部分をすべて0に しなきゃいけません。 例: FOR I=1 TO NUMBER → FOR I=0 TO NUMBER-1 HEIGHT(1) → HEIGHT(0), HEIGHT(10) → HEIGHT(9) 等
LET NUMBER=10 !人数 DIM HEIGHT(NUMBER) !身長を格納する配列 DIM WEIGHT(NUMBER) !体重を格納する配列
REM 10人の身長と体重を測定する。(身長は小数点第1位まで表記) REM (ただし、170.0cmの人を1人入れよ) REM 身長データ DATA 170.0,150.0,160.0,169.9,170.5,180.6,190.5,200.6,300.9,400.5 READ HEIGHT(1),HEIGHT(2),HEIGHT(3),HEIGHT(4),HEIGHT(5),HEIGHT(6),HEIGHT(7),HEIGHT(8),HEIGHT(9),HEIGHT(10) REM 体重データ DATA 10,20,30,40,50,60,70,80,90,100 READ WEIGHT(1),WEIGHT(2),WEIGHT(3),WEIGHT(4),WEIGHT(5),WEIGHT(6),WEIGHT(7),WEIGHT(8),WEIGHT(9),WEIGHT(10)
100 REM 110 A=A+1 120 INPUT B 130 INPUT C 140 IF B<170 THEN GOTO 150 ELSE GOTO 160 150 D=D+1 160 E=E+1 170 IF C>68 THEN GOTO 180 ELSE GOTO 190 180 DA=DA+1 190 EA=EA+1 200 IF A=10 THEN GOTO 210 ELSE GOTO 110 210 Ave=B/10 220 Ave=C/10 230 PRINT B 240 PRINT C 250 END
100 REM 110 A=A+1 120 INPUT B 130 INPUT C 140 IF B<170 THEN GOTO 150 ELSE GOTO 160 150 D=D+1 160 E=E+1 170 IF C>68 THEN GOTO 180 ELSE GOTO 190 180 DA=DA+1 190 EA=EA+1 200 IF A=10 THEN GOTO 210 ELSE GOTO 110 210 Ave=B/10 220 Ave=C/10 230 PRINT B 240 PRINT C 250 END
10 FOR I=1 TO 10 15 PRINT I;"番目" 20 INPUT"身長=";HEI 30 INPUT"体重="; WEI 40 IF HEI>=170 THEN HEIP=HEIP+1:HEIT=HEIT+HEI 50 IF WEI<68 THEN WEIP=WEIP+1:WEIT=WEIT+WEI 60 NEXT I 70 PRINT"身長170cm以上の人数…";HEIP 80 IF HEIP>0 THEN PRINT USING"平均…####.#";HEIT/HEIP 90 PRINT 100 PRINT"体重68kg未満の人数…";WEIP 110 IF WEIP>0 THEN PRINT USING"平均…####.#";WEIT/WEIP 120 END
10 FOR I=1 TO 10 15 PRINT I;"番目" 20 INPUT"身長=";HEI 30 INPUT"体重="; WEI 40 IF HEI>=170 THEN HEIP=HEIP+1:HEIT=HEIT+HEI 50 IF WEI<68 THEN WEIP=WEIP+1:WEIT=WEIT+WEI 60 NEXT I 70 PRINT"身長170cm以上の人数…";HEIP 80 IF HEIP>0 THEN HEIA=HEIT/HEIP:HEIA=INT(HEIA*10):HEIA=HEIA/10:PRINT"平均…";HEIA 90 PRINT 100 PRINT"体重68kg未満の人数…";WEIP 110 IF WEIP>0 THEN WEIA=WEIT/WEIP:WEIA=INT(WEIA*10):WEIA=WEIA/10:PRINT"平均…";WEIA 120 END
10 DEFINT A-Z 20 INPUT N: A$=CHR$(10)+CHR$(13) 30 FOR K=1 TO N 40 ZA$=A$: ZN=K: GOSUB 500: A$=ZA$ 50 NEXT K 60 LPRINT A$ 500 REM 510 ZB$="" 520 FOR ZK=0 TO LEN(ZA$) STEP ZN+2: ZT$=MID$(ZA$, ZK, ZN) 530 FOR ZI=1 TO N: ZD$=RIGHT$(STR$(ZI), 1) 540 IF NOT INSTR(ZT$, ZD$) THEN ZB$=ZB$+ZD$+ZT$+CHR$(10)+CHR$(13) 550 NEXT ZI 560 NEXT ZK 570 RETURN
10 DEFINT A-Z 20 INPUT N: A$=CHR$(10)+CHR$(13) 30 FOR K=1 TO N 40 ZA$=A$: ZN=K: GOSUB 500: A$=ZA$ 50 NEXT K 60 LPRINT A$ 70 END 500 REM 510 ZB$="" 520 FOR ZK=0 TO LEN(ZA$) STEP ZN+2: ZT$=MID$(ZA$, ZK, ZN) 530 FOR ZI=1 TO N: ZD$=RIGHT$(STR$(ZI), 1) 540 IF NOT INSTR(ZT$, ZD$) THEN ZB$=ZB$+ZD$+ZT$+CHR$(10)+CHR$(13) 550 NEXT ZI 560 NEXT ZK 570 RETURN
10 DEFINT A-Z 20 INPUT N: A$=CHR$(10)+CHR$(13) 30 FOR K=1 TO N 40 ZA$=A$: ZN=K: GOSUB 500: A$=ZB$ 50 NEXT K 60 LPRINT A$ 70 END 500 REM 510 ZB$="" 520 FOR ZK=0 TO LEN(ZA$) STEP ZN+2: ZT$=MID$(ZA$, ZK, ZN) 530 FOR ZI=1 TO N: ZD$=RIGHT$(STR$(ZI), 1) 540 IF NOT INSTR(ZT$, ZD$) THEN ZB$=ZB$+ZD$+ZT$+CHR$(10)+CHR$(13) 550 NEXT ZI 560 NEXT ZK 570 RETURN
A.BAS 1000 N=10 1010 DATA "A",60,180,20 1020 DATA "B",38,128,11 ・・・
B.BAS 1000 CHAIN MERGE "A.BAS" 2010 WA=0:HA=0:M=0:MW=1E10 2020 FOR I=1 TO N: READ NA$,W,H,A 2030 IF W < MW THEN MW=W:MNA$=NA$ 2040 IF H>=160 AND H<170 THEN PRINT "身長160cm以上170cm未満:"; NA$ 2050 IF W>=60 AND H<150 THEN PRINT "体重60kg以上、身長150cm未満:"; NA$ 2060 IF A<=30 THEN WA=WA+W: HA=HA+H: M=M+1 2070 NEXT 2080 PRINT "体重が最も軽い:"; MNA$ 2090 IF M<>0 THEN PRINT "30歳以下の平均体重、身長:"; WA/M, HA/M
>>196 REM エラトステネスの篩 DECLARE NUMERIC i, j, total DIM prm(2 TO 4096) MAT prm = CON FOR i=2 TO INT(SQR(4096)) IF prm(i) <> 0 THEN FOR j=i*2 TO 4096 STEP i LET prm(j) = 0 NEXT J END IF NEXT I LET total = 0 FOR i=2 TO 4096 IF prm(i) <> 0 THEN PRINT i LET total = total + i END IF NEXT I PRINT PRINT total END
LET p = 0 LET answer = -1 FOR i = 1 TO x LET i = i + 1 / i IF p > 6 THEN LET answer = x NEXT PRINT p IF answer <> -1 THEN PRINT answer ELSE PRINT "ありません" END
また、最終的な合計を求めて PRINT p をする必要が無ければ IF p > 6 の時点でループを抜けても良い。
PROGRAM ca2 LIBRARY "csgraphics" DIM update(0 TO 511),cell(50,50) CALL setrule(update(),L) LET flag$ = "" DO CALL initial(cell(,),update(),L) DO CALL iterate(cell(,),update(),L) IF key INPUT THEN GET key k IF (k = ORD("s")) OR (k = ORD("S")) THEN LET flag$ = "stop" END IF END IF LOOP UNTIL k <> 0 LET k = 0 LOOP UNTIL flag$ = "stop" END
SUB setrule(update(),L) FOR i = 0 TO 511 LET update(i) = 0 NEXT i FOR nn1 = 0 TO 5 FOR nn2 = nn1+1 TO 7 FOR nn3 = nn2+1 TO 7 LET index = 2^nn1 + 2^nn2 + 2^nn3 LET update(index) = 1 LET update(index+256) = 1 NEXT nn3 NEXT nn2 NEXT nn1 FOR nn1 = 0 TO 6 FOR nn2 = nn1+1 TO 7 LET index = 256 + 2^nn1 + 2^nn2 LET update(index) = 1 NEXT nn2 NEXT nn1 SET BACKGROUND COLOR "black" SET COLOR "white" INPUT PROMPT "lattice size = ": L CALL compute_aspect_ratio(L,xwin,ywin) SET WINDOW -0.2*xwin,1.2*xwin,-0.2*ywin,1.2*ywin END SUB
SUB initial(cell(,),L) FOR i = 1 TO L FOR j = 1 TO L LET cell(i,j) = 0 SET COLOR "yellow" BOX AREA i,i+1,j,j+1 SET COLOR "black" BOX LINES i,i+1,j,j+1 NEXT j NEXT i SET CURSOR 1,1 SET COLOR "white" PRINT "click to cell to toggle or outside of lattice to continue." DO GET POINT x,y IF x > 1 AND x < L AND y > 1 AND y < L THEN LET i = TRUNCATE(x,0) LET j = TRUNCATE(y,0) IF cell(i,j) = 0 THEN SET COLOR "black" BOX AREA i,i+1,j,j+1 LET cell(i,j) = 1 ELSE SET COLOR "yellow" BOX AREA i,i+1,j,j+1 LET cell(i,j) = 0 SET COLOR "black" BOX LINES i,i+1,j,j+1 END IF
END IF LOOP UNTIL x < 1 OR x > L OR y < 1 OR y > L SET CURSOR 1,1 SET COLOR "white" PRINT "Hit and key for new lattice, 's' to stop"; PRINT " " END SUB SUB iterate(cell(,),update(),L) DIM cellnew(50,50) FOR i = 1 TO L FOR j= 1 TO L CALL neighborhood(cell(,),i,j,sum,L) LET cellnew(i,j) = update(sum) IF cell(i,j) = 1 AND cellnew(i,j) = 0 THEN SET COLOR "yellow" BOX AREA i,i+1,j,j+1 SET COLOR "black" BOX LINES i,i+1,j,j+1 ELSE IF cell(i,j) = 0 AND cellnew(i,j) = 1 THEN SET COLOR "black" BOX AREA i,i+1,j,j+1 END IF NEXT j NEXT i MAT cell = cellnew END SUB
SUB neighborhood(cell(,),i,j,sum,L) LET IP = j + 1 LET im = j - 1 LET jp = j + 1 LET jm = j - 1 IF i = 1 THEN LET im = L ELSE IF i = L THEN LET IP = 1 END IF IF j = 1 THEN LET jm = L ELSE IF j = L THEN LET jp = 1 END IF LET sum = cell(i,jp) + 2*cell(i,jm) + 4*cell(im,j) LET sum = sum + 8*cell(IP,j) + 16*cell(IP,jp) + 32*cell(IP,jm) LET sum = sum + 64*cell(im,jp) + 128*cell(im,jm) + 256*cell(i,j) END SUB