Guest User

Untitled

a guest
Jun 19th, 2018
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Public Function Rand(ByVal Low As Long, _
  2.                      ByVal High As Long) As Long
  3.   Rand = Int((High - Low + 1) * Rnd) + Low
  4. End Function
  5.  
  6. Dim N As Integer ' ко-во строк
  7. Dim M As Integer 'кол-во столбцов
  8. Dim Arr() As Integer ' наш массив
  9. Dim tmpArr() As Integer ' временный массив
  10. Dim newRow() As Integer ' строка, которую необходимо будет "приклеить" снизу к исходному массиву
  11. Dim I As Integer
  12. Dim J As Integer
  13. Dim outString As String
  14.  
  15. Dim vbCrLf As String = Chr(13) + Chr(10) ' для перехода на новую строку
  16. Dim vbTab As String = Chr(9)
  17.  
  18. ' запросить размер массива
  19. Input "N = ", N
  20. Input "M = ", M
  21.  
  22. ' инициализация размеров массивов
  23. ReDim Arr(N, M) As Integer
  24. ReDim tmpArr(N, M) As Integer
  25. ReDim newRow(M) As Integer
  26.  
  27. ' я хз инициализируются ли массивы в этом говне нулями, но на всякий случай сделаем это ручками
  28. For I = 0 To M - 1
  29.     newRow(I) = 0
  30. Next I
  31.  
  32. ' заполнить массив случайными числами
  33. Randomize()
  34. For I = 0 To N - 1 ' по строкам
  35.  For J = 0 To M - 1 ' по столбцам
  36.     Arr(I, J) = Rand(-50, 50)  
  37.     newRow(J) = newRow(J) - Arr(I, J)
  38.  
  39.     outString = outString + vbTab + Str(Arr(I, J))
  40.   Next J
  41.   outString = outString + vbCrLf
  42. Next I
  43.  
  44. Print "Original array:"
  45. Print outString
  46.  
  47.  
  48. ' --------------------------------
  49. ' добавляем новую строку
  50. ' с сохранением данных можно изменять только последнее "измерение"(dimension) - в нашем случае кол-во столбцов
  51. ' чтобы не потерять данные, сохраним их сначала во временный массив, а затем скопируем обратно
  52.  
  53. 'Copy original array into temp array:
  54. For I = 0 To N - 1     'Loop for 1st dimension
  55.    For J = 0 To M - 1  'Loop for 2nd dimension
  56.        tmpArr(I, J) = Arr(I, J)
  57.     Next J
  58. Next I
  59.  
  60. 'Redim original array (destroying it)
  61. N = N + 1
  62. ReDim Arr(N, M)
  63.  
  64. 'Put values back from temporary array
  65. For I = 0 To N - 2      'Loop for 1st dimension
  66.    For J = 0 To M - 1  'Loop for 2nd dimension
  67.        Arr(I, J) = tmpArr(I, J)
  68.     Next J
  69. Next I
  70.  
  71. For J = 0 To M - 1
  72.     Arr(N-1, J) = newRow(J)
  73. Next J
  74.  
  75. ' --------------------------------
  76.  
  77. ' выводим новый массив
  78. outString = ""
  79. For I = 0 To N - 1
  80.     For J = 0 To M - 1
  81.         outString = outString + vbTab + Str(Arr(I, J))
  82.     Next J
  83.     outString = outString + vbCrLf
  84. Next I
  85. Print "New array:"
  86. Print outString
  87.  
  88. Input N
Add Comment
Please, Sign In to add comment