Массив 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