Square but not cube: Difference between revisions

m
→‎{{header|Commodore BASIC}}: Fix inner loop goto target
m (→‎{{header|Commodore BASIC}}: Fix inner loop goto target)
Line 702:
=={{header|Commodore BASIC}}==
{{trans|BASIC}}
<lang basic>100 DIM SC(2): SC = 0: REM REMEMBER SQUARE CUBES
110 PRINT "SQUARES BUT NOT CUBES:"
120 N = 0: REM NUMBER OF NON-CUBE SQUARES FOUND
120 I=1: CU=1: SQ=1: RT=1: N=0
130 SR = 1: REM CURRENT SQUARE ROOT
130 IF N=30 THEN 200
140 CR = 1: CU = 1: REM CURRENT CUBE ROOT AND CUBE
140 SQ=I*I
150 REM BEGIN LOOP
150 IF SQ > CU THEN RT=RT+1: CU=RT*RT*RT: GOTO 150
160 : IF SQN >= CU30 THEN SC(SC)=SQ:SC=SC+1230
170 IF: SQ <= CUSR THEN* N=N+1:PRINT SQ,SR
150180 : IF SQ > CU THEN RTCR =RT CR + 1: CU =RT CR*RTCR*RTCR: GOTO 150180
180 I=I+1
190 : IF SQ = CU THEN SC(SC) = SQ: SC = SC + 1
190 GOTO 130
200 PRINT: IF SQ < CU THEN N = N + 1:PRINT SQ,
210 PRINT: "BOTHSR SQUARES= ANDSR CUBES:"+ 1
220 GOTO 160: REM END LOOP
220 FOR I=0 TO SC-1:PRINT SC(I),:NEXT I
230 PRINT</lang>: PRINT
240 PRINT "BOTH SQUARES AND CUBES:"
220250 FOR I=0 TO SC-1: PRINT SC(I),: NEXT I
260 PRINT</lang>
 
{{works with|Commodore BASIC|7.0}}
This version uses BASIC 7's DO ... LOOP structure:
<pre>100 DIM SC(2): SC = 0: REM REMEMBER SQUARE CUBES
110 PRINT "SQUARES BUT NOT CUBES:"
120 N = 0: REM NUMBER OF NON-CUBE SQUARES FOUND
130 SR = 1: REM CURRENT SQUARE ROOT
140 CR = 1: CU = 1: REM CURRENT CUBE ROOT AND CUBE
150 DO WHILE N < 30
170 : SQ = SR * SR
180 : DO WHILE SQ > CU: CR = CR + 1: CU = CR*CR*CR: LOOP
190 : IF SQ = CU THEN SC(SC) = SQ: SC = SC + 1
200 : IF SQ < CU THEN N = N + 1:PRINT SQ,
210 : SR = SR + 1
220 LOOP
230 PRINT: PRINT
240 PRINT "BOTH SQUARES AND CUBES:"
250 FOR I=0 TO SC-1: PRINT SC(I),: NEXT I
260 PRINT</pre>
 
{{Out}}
1,480

edits