Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Помогите занести цифры в массив Добавлено: 20.06.06 19:35  

Автор вопроса:  DJ EFFECT
Дело в том,что в этой функции происходит разбиения числа на цифры и формирования массива из цифр,но она не до конца работает...Помогите доработать ее...

Private Sub fCount(n As Long)
Dim c As Integer, s As Byte, numb() As Byte, i, j, loc
s = 1
While n <> 0
    c = n Mod 10
       ReDim Preserve numb(s)
       numb(s) = c
    s = s + 1
    n = Fix(n / 10)
Wend
For i = 1 To UBound(numb)
     loc = numb(i)
     numb(i) = numb(UBound(numb) - i + 1)
      numb(UBound(numb) - i + 1) = loc
Next i

End Sub

Ответить

  Ответы Всего ответов: 5  

Номер ответа: 1
Автор ответа:
 DJ EFFECT



Вопросов: 10
Ответов: 18
 Профиль | | #1 Добавлено: 20.06.06 19:45

Точнее я занес в массив,только наооборот,другими словами здесь нужно перевернуть элементы массива,т.е.последний стал первым,предпосл. стал вторым и т.д.

Ответить

Номер ответа: 2
Автор ответа:
 Victor



ICQ: 345743490 

Вопросов: 42
Ответов: 385
 Web-сайт: vt-dbnz.narod.ru
 Профиль | | #2
Добавлено: 20.06.06 20:38
(это - переворот массива)
Public Sub ReverseArray(ByRef Ary() As Byte)
Dim i As Long
Dim j As Long
Dim tmp As Byte
Dim l As Long
l = UBound(Ary) - LBound(Ary) + 1
For i = LBound(Ary) To LBound(Ary) + l \ 2 - 1
    j = UBound(Ary) - (i - LBound(Ary))
    tmp = Ary(i)
    Ary(i) = Ary(j)
    Ary(j) = tmp
Next i
End Sub
Подойдет?

Ответить

Номер ответа: 3
Автор ответа:
 DJ EFFECT



Вопросов: 10
Ответов: 18
 Профиль | | #3 Добавлено: 20.06.06 22:08
Да,вполне подойдет...Благодарю

Ответить

Номер ответа: 4
Автор ответа:
 DJ EFFECT



Вопросов: 10
Ответов: 18
 Профиль | | #4 Добавлено: 20.06.06 23:20
Пардон,мой вариант тоже работает,...блин а то че=то думал,что ошибься...ну,ладно111

Ответить

Номер ответа: 5
Автор ответа:
 Victor



ICQ: 345743490 

Вопросов: 42
Ответов: 385
 Web-сайт: vt-dbnz.narod.ru
 Профиль | | #5
Добавлено: 21.06.06 00:07
Да, немного не досмотрел. Там вот так
For i = 1 To UBound(numb)
     loc = numb(i)
     numb(i) = numb(UBound(numb) - i + 1)
      numb(UBound(numb) - i + 1) = loc
Next i
производится обращение порядка. Но дважды, так как пробегаться надо не по всем элементам, а только по половине. Надо ставить что-то типа UBound\2 в верхнем пределе вместо UBound.

В принципе можно было делать изначальный разворот массива, если только заранее знать колво цифр в числе. И это даже можно определить: NumberOfDigits = int(log(number)/log(10)*1.00000000000001)+1 (если конечно ничего не напутал). Но с последующим разворотом надежнее (не должно быть проблем с отрицательными числами).

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам