59 lines
1.2 KiB
Plaintext
59 lines
1.2 KiB
Plaintext
#False = 0
|
|
#True = 1
|
|
|
|
Global *inputPtr.Character
|
|
|
|
Macro nextChar()
|
|
*inputPtr + SizeOf(Character)
|
|
EndMacro
|
|
|
|
Procedure isPunctuation(c.s)
|
|
If FindString("!?()[]{},.;:-'" + #DQUOTE$, c)
|
|
ProcedureReturn #True
|
|
EndIf
|
|
ProcedureReturn #False
|
|
EndProcedure
|
|
|
|
Procedure oddWord()
|
|
Protected c.c
|
|
c = *inputPtr\c
|
|
If isPunctuation(Chr(*inputPtr\c))
|
|
ProcedureReturn
|
|
Else
|
|
nextChar()
|
|
oddWord()
|
|
EndIf
|
|
Print(Chr(c))
|
|
EndProcedure
|
|
|
|
Procedure oddWordProblem(inputStream.s)
|
|
*inputPtr = @inputStream
|
|
Define isOdd = #False
|
|
While *inputPtr\c
|
|
If isOdd
|
|
oddWord()
|
|
Else
|
|
Repeat
|
|
Print(Chr(*inputPtr\c))
|
|
nextChar()
|
|
Until isPunctuation(Chr(*inputPtr\c))
|
|
EndIf
|
|
Print(Chr(*inputPtr\c))
|
|
isOdd ! 1 ;toggle word indicator
|
|
nextChar()
|
|
Wend
|
|
EndProcedure
|
|
|
|
Define inputStream.s
|
|
If OpenConsole()
|
|
Repeat
|
|
PrintN(#CRLF$ + #CRLF$ + "Enter a series of words consisting only of English letters (i.e. a-z, A-Z)")
|
|
PrintN("and that are separated by a punctuation mark (i.e. !?()[]{},.;:-' or " + #DQUOTE$ + ").")
|
|
inputStream = Input()
|
|
oddWordProblem(inputStream) ;assume input is correct
|
|
Until inputStream = ""
|
|
|
|
Print(#CRLF$ + #CRLF$ + "Press ENTER to exit"): Input()
|
|
CloseConsole()
|
|
EndIf
|