Вывести все элементы массива по возрастанию в переменную string - VB
Формулировка задачи:
Добрый день!
Помогите, пожалуйста. Третий день голову ломаю.
Имеется массив Arr, состоящий из n-количества элементов (float). Необходимо вывести все элементы по возрастанию в string'овую переменную, причем, если последующие элементы на 1 больше или на 1 меньше, то записать через тире. Например:
Заранее спасибо.
Листинг программы
- A(1)=1
- A(2)=2
- A(3)=3
- A(4)=5
- A(5)=7.4
- A(6)=9
- A(7)=22
- A(8)=4
- A(9)=7.1
- A(10)=6
- 'в итоге дожно получиться:
- str="1-6, 7.1, 7.4, 9, 22"
Решил. Изврат, но работает.
Листинг программы
- Redim A(10)
- A(1)="1"
- A(2)="2"
- A(3)="3"
- A(4)="5"
- A(5)="7,4"
- A(6)="9"
- A(7)="22"
- A(8)="11"
- A(9)="7,1"
- A(10)="6"
- for j=1 to 10
- f=0
- for i=1 to 10-j
- if CDbl(A(i))>CDbl(A(i+1)) then
- str=A(i)
- A(i)=A(i+1)
- A(i+1)=str
- f=1
- end if
- next
- if f=0 then
- exit for
- end if
- next
- redim B(10)
- '===============================
- for i = 1 to 9
- if CDbl(A(i))=CDbl(A(i+1))-1 then
- if i=9 then
- str1=str1 & A(i) & "_"& A(i+1)
- else
- str1=str1 & A(i) & "_"
- end if
- else
- if i=9 then
- str1=str1 & A(i) & ";"& A(i+1)
- else
- str1=str1 & A(i) & ";"
- end if
- end if
- next
- str1=Replace(str1, ",", ".")
- '===============================
- wscript.echo str1
- if instr(str1,";")>0 then
- splitter=Split(str1, ";")
- for n=LBound(splitter) to UBound(splitter)
- if instr(splitter(n),"_")>0 then
- minspl=split(splitter(n), "_")
- if UBound(minspl)>1 then
- outval=outval & minspl(LBound(minspl))& " ... " & minspl(UBound(minspl))&", "
- else
- outval=outval & minspl(LBound(minspl))& ", " & minspl(UBound(minspl))&", "
- end if
- else
- outval=outval & splitter(n)&", "
- end if
- next
- else
- outval= A(1) & "..." & A(10)
- end if
- wscript.echo outval
Решение задачи: «Вывести все элементы массива по возрастанию в переменную string»
textual
Листинг программы
- n = 9
- a = Array("1", "2", "3", "5", "7,4", "9", "22", "11", "7,1", "6")
- s1 = "Исходный массив:" & vbCrLf & Join(a, "; ")
- s2 = "Результат:" & vbCrLf
- For j = 0 To n
- For i = 0 To n - 1 - j
- If CDbl(a(i)) > CDbl(a(i + 1)) Then
- tmp = a(i)
- a(i) = a(i + 1)
- a(i + 1) = tmp
- End If
- Next
- Next
- For i = 0 To n - 1
- If Abs(a(i) - a(i + 1)) = 1 Then
- a(i) = a(i) & "_"
- Else
- a(i) = a(i) & ";"
- End If
- Next
- s2 = s2 & Join(a)
- wscript.echo s1 & vbcrlf & s2
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д