Сортировка строки по возрастанию - QBasic
Формулировка задачи:
Дано число в виде строковой переменной (строки)
Требуется провести сортировку этой строки в порядке
возрастания. Эта программа (мечта программиста)
исполняет все, что от нее требуется.
Вы видели когда-нибудь Идеальный Код? Посмотрите!
Листинг программы
- REM
- REM Сортировка строки по возрастанию
- REM
- DECLARE FUNCTION M$ (d%)
- DECLARE SUB SWEP (M%, n%)
- CLS
- DIM SHARED S AS STRING
- DIM i AS INTEGER
- DIM j AS INTEGER
- S = "5842776892541708036"
- PRINT S: PRINT
- k = LEN(S)
- FOR i = 1 TO k - 1
- FOR j = i + 1 TO k
- IF M(i) > M(j) THEN SWEP i, j
- NEXT j, i
- PRINT S
- END
- FUNCTION M$ (d AS INTEGER)
- M = MID$(S, d, 1)
- END FUNCTION
- SUB SWEP (M AS INTEGER, n AS INTEGER)
- DIM s1 AS STRING
- DIM s2 AS STRING
- s1 = MID$(S, M, 1)
- s2 = MID$(S, n, 1)
- MID$(S, M, 1) = s2
- MID$(S, n, 1) = s1
- END SUB
Решение задачи: «Сортировка строки по возрастанию»
textual
Листинг программы
- Function CSort(S As String) As String
- Dim X(0 To 9) As Integer
- For i% = 1 To Len(S)
- k% = Val(Mid$(S, i%, 1))
- X(k%) = X(k%) + 1
- Next i%
- CSort = ""
- For i% = 0 To 9
- If X(i%) > 0 Then CSort = CSort & String(X(i%), CStr(i%))
- Next i%
- End Function
- Sub Test()
- Randomize Timer
- Buf$ = Space$(3000)
- For i% = 1 To 3000
- Mid$(Buf$, i%, 1) = CStr(Rnd() * 10)
- Next i%
- Debug.Print "До сортировки: "
- Debug.Print Buf$
- Debug.Print
- Debug.Print "После сортировки: "
- Debug.Print CSort(Buf$)
- Debug.Print
- End Sub
Объяснение кода листинга программы
Список элементов функции и подпрограммы:
- В функции CSort(S As String) As String происходит сортировка строки S по возрастанию.
- Создается массив X(0 To 9) As Integer размером 10 для хранения количества каждого символа в строке S.
- Происходит проход по каждому символу строки S с помощью цикла For i% = 1 To Len(S).
- Для каждого символа вычисляется его числовое значение с помощью функции Val(Mid$(S, i%, 1)).
- Полученное числовое значение используется для индексации массива X, увеличивая его значение на 1.
- После прохода по всем символам строки S, в массиве X содержится количество каждого символа.
- В цикле For i% = 0 To 9, если X(i%) больше 0, то к строке CSort добавляется строка, состоящая из символа, повторенного X(i%) раз, с помощью функции String(X(i%), CStr(i%)).
- В подпрограмме Test() создается случайная строка Buf$ из 3000 символов, где каждый символ выбирается случайным образом от 0 до 9.
- Строка Buf$ выводится на экран до сортировки.
- Вызывается функция CSort(Buf$) для сортировки строки Buf$.
- Отсортированная строка выводится на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д