Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- DECLARE FUNCTION GetWord$ (Tex$)
- CONST EndOfLine = "_EOL_", Delimiter = " ", EmptyString = ""
- DIM A$, Words$(1 TO 100), Word$
- DIM SHARED I AS INTEGER 'SHARED - общая с функциями переменная. ее значение видно в них
- DIM WI AS INTEGER
- CLS
- INPUT "Введите строку A$: ", A$
- I = 1
- DO
- Word$ = GetWord$(A$)
- SELECT CASE Word$
- CASE Delimiter, EmptyString, EndOfLine
- CASE ELSE
- WI = WI + 1
- Words$(WI) = Word$
- END SELECT
- LOOP UNTIL Word$ = EndOfLine
- TotalWords = WI
- 'Реализация сортировки выбором и слиянием прямо с википедии)00
- FOR J = 1 TO WI - 1
- F = 0
- Min = J
- FOR I = J TO WI - J
- IF ASC(UCASE$(Words$(I))) > ASC(UCASE$(Words$(I + 1))) THEN SWAP Words$(I), Words$(I + 1): F = 1
- IF ASC(UCASE$(Words$(I))) < ASC(UCASE$(Words$(Min))) THEN Min = I
- NEXT I
- IF F = 0 THEN EXIT FOR
- IF Min <> J THEN SWAP Words$(J), Words$(Min)
- NEXT J
- PRINT "Выходная отсортированная строка: ";
- FOR WI = 1 TO TotalWords
- PRINT Words$(WI); " ";
- NEXT WI
- 'Функция получает отдельное слово и возвращает его.
- 'Если вместо слова натыкается на пунктуацию всякую - возвращает пробел
- 'Этим дает знать, что наткнулась на разделитель. Стало быть
- 'точка запятая воск знак и прочее такое у нас разделяют слова.
- 'Если достигает последнего символа в строке - возвращает контстанту EndOfLine как индикатор
- FUNCTION GetWord$ (Tex$)
- StartIndex = I
- Length = 0
- SELECT CASE MID$(Tex$, I, 1)
- 'CP866 - у мелких русских разрыв от а до п и потом р к я - из-за специфики 866 кодировки
- CASE "A" TO "Z", "a" TO "z", "А" TO "Я", "а" TO "п", "р" TO "я", "'"
- DO
- SELECT CASE MID$(Tex$, I, 1)
- CASE "A" TO "Z", "a" TO "z", "А" TO "Я", "а" TO "п", "р" TO "я", "'"
- I = I + 1
- Length = Length + 1
- CASE ELSE
- GetWord$ = MID$(Tex$, StartIndex, Length)
- EXIT DO
- END SELECT
- LOOP
- CASE Delimiter, ".", ",", "!", "?"
- I = I + 1
- GetWord$ = Delimiter
- CASE ELSE
- IF I >= LEN(Tex$) THEN
- GetWord$ = EndOfLine
- ELSE
- I = I + 1
- GetWord$ = EmptyString
- END IF
- END SELECT
- END FUNCTION
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement