RosettaCodeData/Task/Phrase-reversals/GW-BASIC/phrase-reversals.basic
2024-10-16 18:07:41 -07:00

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