Вывести все элементы массива по возрастанию в переменную string - VB

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

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

Добрый день! Помогите, пожалуйста. Третий день голову ломаю. Имеется массив Arr, состоящий из n-количества элементов (float). Необходимо вывести все элементы по возрастанию в string'овую переменную, причем, если последующие элементы на 1 больше или на 1 меньше, то записать через тире. Например:
Листинг программы
  1. A(1)=1
  2. A(2)=2
  3. A(3)=3
  4. A(4)=5
  5. A(5)=7.4
  6. A(6)=9
  7. A(7)=22
  8. A(8)=4
  9. A(9)=7.1
  10. A(10)=6
  11. 'в итоге дожно получиться:
  12. str="1-6, 7.1, 7.4, 9, 22"
Заранее спасибо.
Решил. Изврат, но работает.
Листинг программы
  1. Redim A(10)
  2. A(1)="1"
  3. A(2)="2"
  4. A(3)="3"
  5. A(4)="5"
  6. A(5)="7,4"
  7. A(6)="9"
  8. A(7)="22"
  9. A(8)="11"
  10. A(9)="7,1"
  11. A(10)="6"
  12.  
  13. for j=1 to 10
  14. f=0
  15. for i=1 to 10-j
  16. if CDbl(A(i))>CDbl(A(i+1)) then
  17. str=A(i)
  18. A(i)=A(i+1)
  19. A(i+1)=str
  20. f=1
  21. end if
  22. next
  23. if f=0 then
  24. exit for
  25. end if
  26. next
  27. redim B(10)
  28. '===============================
  29. for i = 1 to 9
  30. if CDbl(A(i))=CDbl(A(i+1))-1 then
  31. if i=9 then
  32. str1=str1 & A(i) & "_"& A(i+1)
  33. else
  34. str1=str1 & A(i) & "_"
  35. end if
  36. else
  37. if i=9 then
  38. str1=str1 & A(i) & ";"& A(i+1)
  39. else
  40. str1=str1 & A(i) & ";"
  41. end if
  42. end if
  43. next
  44. str1=Replace(str1, ",", ".")
  45. '===============================
  46. wscript.echo str1
  47. if instr(str1,";")>0 then
  48. splitter=Split(str1, ";")
  49. for n=LBound(splitter) to UBound(splitter)
  50. if instr(splitter(n),"_")>0 then
  51. minspl=split(splitter(n), "_")
  52. if UBound(minspl)>1 then
  53. outval=outval & minspl(LBound(minspl))& " ... " & minspl(UBound(minspl))&", "
  54. else
  55. outval=outval & minspl(LBound(minspl))& ", " & minspl(UBound(minspl))&", "
  56. end if
  57. else
  58. outval=outval & splitter(n)&", "
  59. end if
  60. next
  61.  
  62. else
  63. outval= A(1) & "..." & A(10)
  64. end if
  65. wscript.echo outval

Решение задачи: «Вывести все элементы массива по возрастанию в переменную string»

textual
Листинг программы
  1. n = 9
  2. a = Array("1", "2", "3", "5", "7,4", "9", "22", "11", "7,1", "6")
  3. s1 = "Исходный массив:" & vbCrLf & Join(a, "; ")
  4. s2 = "Результат:" & vbCrLf
  5. For j = 0 To n
  6.         For i = 0 To n - 1 - j
  7.             If CDbl(a(i)) > CDbl(a(i + 1)) Then
  8.                tmp = a(i)
  9.                a(i) = a(i + 1)
  10.                a(i + 1) = tmp
  11.             End If
  12.          Next
  13. Next
  14. For i = 0 To n - 1
  15.          If Abs(a(i) - a(i + 1)) = 1 Then
  16.               a(i) = a(i) & "_"
  17.          Else
  18.              a(i) = a(i) & ";"
  19.          End If
  20. Next
  21. s2 = s2 & Join(a)
  22. wscript.echo s1 & vbcrlf & s2

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


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

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

12   голосов , оценка 3.75 из 5

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

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

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