Добавить (удалить) 1 элемент с конца массива - VB

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

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

Доброго всем времени суток!Мои знания VB6 практически нулевые,разбираюсь по самоучителю,консультироваться не с кем,надеюсь только на вашу помощь.Пытаюсь "изобретать велосипед" подобие функций push_back() и pop_dack() в с++. Не могу врубиться почему не получаются пустые массивы.Вот мой код на форме одна кнопка
Листинг программы
  1. Option Explicit
  2. 'функция добавления 1 элемента в конец массива
  3. Function PushBack(Arr() As Double, x, b) As Double()
  4. ReDim Preserve Arr(x) 'Выделим память
  5. Arr(x) = b 'Добавил 1 элемент
  6. x = x + 1 'Добавил память
  7. PushBack = Arr
  8. End Function
  9. 'функция удаления 1 элемента с конца массива
  10. Function PopBack(Arr() As Double) As Double()
  11. Dim x As Integer, i As Integer, Temp() As Double
  12. x = UBound(Arr) 'измерил массив
  13. If x >= 1 Then ReDim Temp(x - 1) _
  14. Else: PopBack = Arr: Exit Function 'переопределил память если выходим за нижний предел
  15. 'выходим из функции продолжать нет смысла
  16. For i = 0 To UBound(Temp)
  17. Temp(i) = Arr(i) 'копирую поэлементно во временный массив
  18. Next
  19. Erase Arr() 'удаляю массив
  20. Arr = Temp 'копирую из временного массива
  21. Erase Temp() 'удаляю временный массив
  22. PopBack = Arr
  23. End Function
  24. 'процедура печати массива
  25. Sub PrintMas(Arr() As Double)
  26. Dim j As Byte
  27. For j = LBound(Arr) To UBound(Arr)
  28. Print Arr(j);
  29. Next
  30. Print
  31. End Sub
  32. 'Test
  33. Private Sub Command1_Click()
  34. Dim Test() As Double, Test1() As Double
  35. Dim i As Integer, j As Integer, N As Integer
  36. Print "Добавляю в цикле"
  37. For i = -5 To 5
  38. Test = PushBack(Test(), N, i) 'Добавляю в цикле
  39. Next
  40. PrintMas Test()
  41. Print "Добавляю 1 элемент"
  42. Test = PushBack(Test(), N, 100) 'Добавляю 1 элемент
  43. PrintMas Test()
  44. Print "удаляю 1 элемент"
  45. Test = PopBack(Test()) 'удаляю 1 элемент
  46. PrintMas Test()
  47. Print "удаляю в цикле"
  48. For i = 1 To 6
  49. Test = PopBack(Test()) 'удаляю в цикле
  50. Next
  51. PrintMas Test()
  52. Print "удаляю в цикле явно больше массива,0вой остался "
  53. For i = 1 To 10
  54. Test = PopBack(Test()) 'удаляю в цикле явно больше массива
  55. Next
  56. PrintMas Test() 'прокол, 0вой остался
  57. End Sub
Код в общем работает,но пустого массива не могу видеть,кроме того в функции PopBack 0вой элемент не удаляется. Пожалуйста подскажите в чем дело,что я не так делаю. Если есть такие же стандартные пожалуйста подскажите. Спасибо.

Решение задачи: «Добавить (удалить) 1 элемент с конца массива»

textual
Листинг программы
  1. Option Explicit
  2.  
  3. Private Sub Push(Arr() As Double, ByVal v As Double)
  4.     On Error Resume Next
  5.     If (Not Arr) = -1 Then ReDim Arr(0) Else ReDim Preserve Arr(UBound(Arr) + 1)
  6.     Arr(UBound(Arr)) = v
  7. End Sub
  8.  
  9. Private Function Pop(Arr() As Double) As Double
  10.     On Error Resume Next
  11.     If (Not Arr) = -1 Then Exit Function
  12.     Pop = Arr(UBound(Arr))
  13.     If UBound(Arr) = 0 Then Erase Arr Else ReDim Preserve Arr(UBound(Arr) - 1)
  14. End Function
  15.  
  16. Private Sub Form_Load()
  17.     Dim ar() As Double
  18.    
  19.     Push ar(), 10
  20.     Push ar(), 9
  21.     Push ar(), 8
  22.     Push ar(), 7
  23.    
  24.     Debug.Print Pop(ar)
  25.    
  26.     Push ar(), 21
  27.     Push ar(), 22
  28.    
  29.     Debug.Print Pop(ar)
  30.     Debug.Print Pop(ar)
  31.     Debug.Print Pop(ar)
  32.     Debug.Print Pop(ar)
  33.     Debug.Print Pop(ar)
  34.    
  35.     Debug.Print Pop(ar)
  36.    
  37. End Sub

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


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

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

13   голосов , оценка 3.846 из 5

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

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

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