Сортировка строки по возрастанию - QBasic

Узнай цену своей работы

Формулировка задачи:

Дано число в виде строковой переменной (строки) Требуется провести сортировку этой строки в порядке возрастания. Эта программа (мечта программиста) исполняет все, что от нее требуется. Вы видели когда-нибудь Идеальный Код? Посмотрите!
Листинг программы
  1. REM
  2. REM Сортировка строки по возрастанию
  3. REM
  4. DECLARE FUNCTION M$ (d%)
  5. DECLARE SUB SWEP (M%, n%)
  6. CLS
  7. DIM SHARED S AS STRING
  8. DIM i AS INTEGER
  9. DIM j AS INTEGER
  10. S = "5842776892541708036"
  11. PRINT S: PRINT
  12. k = LEN(S)
  13. FOR i = 1 TO k - 1
  14. FOR j = i + 1 TO k
  15. IF M(i) > M(j) THEN SWEP i, j
  16. NEXT j, i
  17. PRINT S
  18. END
  19. FUNCTION M$ (d AS INTEGER)
  20. M = MID$(S, d, 1)
  21. END FUNCTION
  22. SUB SWEP (M AS INTEGER, n AS INTEGER)
  23. DIM s1 AS STRING
  24. DIM s2 AS STRING
  25. s1 = MID$(S, M, 1)
  26. s2 = MID$(S, n, 1)
  27. MID$(S, M, 1) = s2
  28. MID$(S, n, 1) = s1
  29. END SUB

Решение задачи: «Сортировка строки по возрастанию»

textual
Листинг программы
  1. Function CSort(S As String) As String
  2. Dim X(0 To 9) As Integer
  3.     For i% = 1 To Len(S)
  4.         k% = Val(Mid$(S, i%, 1))
  5.         X(k%) = X(k%) + 1
  6.     Next i%
  7.     CSort = ""
  8.     For i% = 0 To 9
  9.         If X(i%) > 0 Then CSort = CSort & String(X(i%), CStr(i%))
  10.     Next i%
  11. End Function
  12.  
  13. Sub Test()
  14.  
  15.     Randomize Timer
  16.    
  17.     Buf$ = Space$(3000)
  18.    
  19.     For i% = 1 To 3000
  20.         Mid$(Buf$, i%, 1) = CStr(Rnd() * 10)
  21.     Next i%
  22.  
  23.     Debug.Print "До сортировки: "
  24.     Debug.Print Buf$
  25.     Debug.Print
  26.    
  27.     Debug.Print "После сортировки: "
  28.     Debug.Print CSort(Buf$)
  29.     Debug.Print
  30.  
  31. End Sub

Объяснение кода листинга программы

Список элементов функции и подпрограммы:

  1. В функции CSort(S As String) As String происходит сортировка строки S по возрастанию.
  2. Создается массив X(0 To 9) As Integer размером 10 для хранения количества каждого символа в строке S.
  3. Происходит проход по каждому символу строки S с помощью цикла For i% = 1 To Len(S).
  4. Для каждого символа вычисляется его числовое значение с помощью функции Val(Mid$(S, i%, 1)).
  5. Полученное числовое значение используется для индексации массива X, увеличивая его значение на 1.
  6. После прохода по всем символам строки S, в массиве X содержится количество каждого символа.
  7. В цикле For i% = 0 To 9, если X(i%) больше 0, то к строке CSort добавляется строка, состоящая из символа, повторенного X(i%) раз, с помощью функции String(X(i%), CStr(i%)).
  8. В подпрограмме Test() создается случайная строка Buf$ из 3000 символов, где каждый символ выбирается случайным образом от 0 до 9.
  9. Строка Buf$ выводится на экран до сортировки.
  10. Вызывается функция CSort(Buf$) для сортировки строки Buf$.
  11. Отсортированная строка выводится на экран.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.286 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы