42 lines
1.9 KiB
Text
42 lines
1.9 KiB
Text
100 TXT$ = "rosetta code phrase reversal" 'The string
|
|
110 NTXT$ = "" 'String variables
|
|
120 T$ = "" 'Temporary string variable
|
|
130 CNT = 0 'Counter
|
|
140 DIM WRD$(100) 'Word store
|
|
150 I = 0 'Index variable
|
|
160 PIO = 1 'Start position for word extraction
|
|
170 FIN = 0 'End position for word extraction
|
|
180 NMW = 0 'Number of words
|
|
190 ' Loop backwards through the string
|
|
200 FOR CNT = LEN(TXT$) TO 1 STEP -1
|
|
210 NTXT$ = NTXT$ + MID$(TXT$, CNT, 1) 'Add each character to the new string
|
|
220 NEXT
|
|
230 PRINT "Original string => " + TXT$ 'Print the original string
|
|
240 PRINT "Reversed string => " + NTXT$ 'Print the reversed string
|
|
250 NTXT$ = "" 'Reset sNewString
|
|
260 ' Manually split the original string by spaces
|
|
270 FOR I = 1 TO LEN(TXT$)
|
|
280 IF MID$(TXT$, I, 1) = " " OR I = LEN(TXT$) THEN GOSUB 470
|
|
290 NEXT
|
|
300 ' Loop backward through each word in sWord
|
|
310 FOR CNT = NMW - 1 TO 0 STEP -1
|
|
320 NTXT$ = NTXT$ + WRD$(CNT) + " " 'Add each word to sNewString
|
|
330 NEXT
|
|
340 PRINT "Reversed order => " + NTXT$ 'Print reversed word order
|
|
350 NTXT$ = "" 'Reset sNewString
|
|
360 ' For each word in sWord
|
|
370 FOR I = 0 TO NMW - 1
|
|
380 T$ = WRD$(I)
|
|
390 ' Loop backward through the word
|
|
400 FOR CNT = LEN(T$) TO 1 STEP -1
|
|
410 NTXT$ = NTXT$ + MID$(T$, CNT, 1) 'Add the characters to sNewString
|
|
420 NEXT
|
|
430 NTXT$ = NTXT$ + " " 'Add a space at the end of each word
|
|
440 NEXT
|
|
450 PRINT "Reversed words => " + NTXT$ 'Print words reversed
|
|
460 END
|
|
470 IF I = LEN(TXT$) THEN FIN = I ELSE FIN = I - 1
|
|
480 WRD$(NMW) = MID$(TXT$, PIO, FIN - PIO + 1)
|
|
490 NMW = NMW + 1
|
|
500 PIO = I + 1
|
|
510 RETURN
|