Объединить массивы так, чтобы результирующий массив остался упорядоченным по убыванию - VB

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

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

Даны три целочисленных массива A, B и C размера NA, NB, NC соответственно, элементы которых упорядочены по убыванию. Объединить эти массивы так, чтобы результирующий целочисленный массив D (размера NA + NB + NC) остался упорядоченным по убыванию.

Решение задачи: «Объединить массивы так, чтобы результирующий массив остался упорядоченным по убыванию»

textual
Листинг программы
  1. Sub Merge2(A() As Integer, B() As Integer, R() As Integer)
  2.  
  3.    ia% = LBound(A, 1)
  4.    ib% = LBound(B, 1)
  5.    ir% = 0
  6.    
  7.    Do
  8.    
  9.       ca% = A(ia%)
  10.       cb% = B(ib%)
  11.            
  12.       If ca% >= cb% Then
  13.          ir% = ir% + 1
  14.          R(ir%) = ca%
  15.          ia% = ia% + 1
  16.       Else
  17.          ir% = ir% + 1
  18.          R(ir%) = cb%
  19.          ib% = ib% + 1
  20.       End If
  21.      
  22.       If (ia% > UBound(A, 1)) Then
  23.          For i% = ib% To UBound(B, 1)
  24.              ir% = ir% + 1
  25.              R(ir%) = B(i%)
  26.          Next i%
  27.          Exit Do
  28.       End If
  29.      
  30.       If (ib% > UBound(B, 1)) Then
  31.          For i% = ia% To UBound(A, 1)
  32.              ir% = ir% + 1
  33.              R(ir%) = A(i%)
  34.          Next i%
  35.          Exit Do
  36.       End If
  37.    
  38.    Loop
  39.  
  40. End Sub
  41.  
  42. Sub Merge3(A() As Integer, B() As Integer, C() As Integer, R() As Integer)
  43.  
  44. Dim Tmp() As Integer
  45.  
  46.     n1% = UBound(A, 1) - LBound(A, 1) + 1
  47.     n2% = UBound(B, 1) - LBound(B, 1) + 1
  48.  
  49.     n3% = n1% + n2%
  50.    
  51.     ReDim Tmp(1 To n3%) As Integer
  52.    
  53.     Merge2 A, B, Tmp
  54.    
  55.     Merge2 Tmp, C, R
  56.  
  57. End Sub
  58.  
  59. Sub Task()
  60.  
  61. Dim A(1 To 10) As Integer
  62. Dim B(1 To 4) As Integer
  63. Dim C(1 To 5) As Integer
  64.  
  65. Dim R(1 To 19) As Integer
  66.  
  67.     A(1) = 10
  68.     A(2) = 8
  69.     A(3) = 7
  70.     A(4) = 6
  71.     A(5) = 5
  72.     A(6) = 4
  73.     A(7) = 4
  74.     A(8) = 3
  75.     A(9) = 3
  76.     A(10) = 0
  77.  
  78.     B(1) = 10
  79.     B(2) = 8
  80.     B(3) = 7
  81.     B(4) = 6
  82.  
  83.     C(1) = -9
  84.     C(2) = -11
  85.     C(3) = -12
  86.     C(4) = -54
  87.     C(5) = -154
  88.  
  89.     Merge3 A, B, C, R
  90.  
  91.     For i% = 1 To 19
  92.         Debug.Print R(i%)
  93.     Next i%
  94.  
  95. End Sub

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


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

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

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

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

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

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