Массив Z(n) разбить на m фрагментов случайной длины. - VB

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

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

Помогите решить задачку на Visual Basic... никак не получается. Условия задачи: Массив Z(n) разбить на m фрагментов случайной длины. Фрагменты записать в матрицу A, содержащую m строк.

Решение задачи: «Массив Z(n) разбить на m фрагментов случайной длины.»

textual
Листинг программы
Private Sub CommandButton1_Click()
Randomize
n = TextBox1.Text
m = TextBox2.Text
 
Dim Z()
ReDim Z(n - 1)
'заполняем Z просто числами по порядку 1,2,3....
For i = 0 To n - 1
  Z(i) = i
Next i
 
Dim arrChastot() 'массив случайных частот каждого интервала
ReDim arrChastot(m - 1)
 
For i = 0 To m - 1
  arrChastot(i) = 1
Next i
For i = 1 To n - m
  tmp = Int(Rnd * m)
  arrChastot(tmp) = arrChastot(tmp) + 1
Next i
 
Dim A()
ReDim A(m - 1)
currentPos = 0
For i = 0 To m - 1
  For j = currentPos To currentPos + arrChastot(i) - 1
    A(i) = A(i) & Z(j) & ", "
    currentPos = currentPos + 1
  Next j
  A(i) = Mid(A(i), 1, Len(A(i)) - 2)
Next i
 
'выводим информацию
Range("A1:W100").Clear 'очищаем старые данные в таблице
 
Cells(1, 1).Formula = "Исходный массив размером " & n & " был разбит на " & m & " блоков размерами:"
For i = 0 To m - 1
  Cells(2, i + 1).Formula = arrChastot(i)
Next i
Cells(3, 1).Formula = "В результате получился новый массив:"
For i = 0 To m - 1
  Cells(i + 4, 1).Formula = A(i)
Next i
End Sub

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

15   голосов , оценка 4.267 из 5
Похожие ответы