Вобщем чтобы все сразу стало на всои места, для начала напишу в чем заключается мое задание:
Сформировать одномерный массив М(29), значение элементов котрого располагается произволным образом в диапазоне от 7 до 9 и округлены до сотых. Сформировать из массива М новый отсортированный массив К по убыванию, в который входят те элементы массива М, у которых величина дробной части больше, чем 2% от значения их индекса в массиве М.
Вывести массивы М и К в виде таблиц с псевдографическими границами(количество строк не более 6, количество столбцов должно быть минимальным и определяется програмно). Индекс каждого элемента таблицы должен быть указан, например М(3)-5.7. Индекс в массиве м изменяется по строке, а в массиве К - по столбцу.
Так вот, составил я такую программу:
- Код: Выделить всё
Dim m(29) As Double
Dim drchast As Double
Dim tmp As Variant
Dim i, switch, limit, n As Long
Dim k() As Double
'Formiruem massiv
For n = 0 To 29
m(n) = 7 + Rnd() * 2
Next
'Sortiruem massiv po metodu puzyr`ka
limit = LBound(m)
Do
switch = UBound(m)
For i = UBound(m) To limit - 1
If m(i) < m(i + 1) Then
tmp = m(i): m(i) = m(i + 1): m(i + 1) = tmp
switch = 1
End If
Next
limit = switch
Loop While switch < UBound(m)
i = -1
For n = 0 To 29
drchast = m(n) - Int(m(n))
If drchast > 0.02 * n Then
i = i + 1
k(i) = m(n)
End If
Text1.Text = Text1.Text & "m" & Str(n) & "= " & Str(m(n)) & vbCrLf
Next
For n = 0 To i
Text1.Text = Text1.Text & "k" & Str(n) & "= " & Str(k(n)) & vbCrLf
Next
И вобщем пишет оно мне, мол "Subscript out of range", выделяя при этом строку "k(i) = m(n)". Непойму почему так? В чем ошибка?
И ещё: в задании сказано, что надо вывести ответ в таблицу с псевдографическими символами, но как это сделать, если в текстбоксе не выводяться псевдографические символы Ascii- вместо них просто вертикальные черточки?
И последнее: как округлить значение переменно до сотых?
Заранее благодарен...