Определение упорядоченности рандомного массива - VB
Формулировка задачи:
Люди помогите, нужно сделать следующую прогу: 1) пользователь задает размерность массива, далее он заполняется случайными числами и выводится на экран. 2) далее необходим определить упорядочен массив или нет, если да то как по убыванию или по возростанию и вывести на экран как именно он упорядочен, если он не упорядочен, выделить две цифры "сбоя" упорядоченности в выведенном на экрне массиве красным цветом.
P.S. когда мне это сказали меня вообще мозги взорвались, даже не представляю как это сделать, особенно с определением цифр сбоя и их выделением, помогите плз.
Решение задачи: «Определение упорядоченности рандомного массива»
textual
Листинг программы
- Private Function ToLong(ByVal this As String) As Long
- On Error GoTo errHandle:
- Dim vResult As Long
- vResult = CLng(this)
- If vResult < 2 Then vResult = 0
- ToLong = vResult
- Exit Function
- errHandle:
- ToLong = 0
- End Function
- Public Sub ArrayInfo()
- Dim vArr() As Double, i As Long, isRandom As Boolean
- Dim sLast As String, vLast As Long
- Dim vLess As Long, vMore As Long, vDiff As Double
- sLast = InputBox("Введите размерность массива", "Ввод", "100")
- vLast = ToLong(sLast)
- If vLast = 0 Then MsgBox "Не верная размерность массива", vbOKOnly + vbExclamation, "Ошибка": Exit Sub
- Math.Randomize
- ReDim vArr(1 To vLast, 1 To 1): ReDim vMark(1 To vLast)
- vLess = 0: vMore = 0
- For i = 1 To vLast
- vArr(i, 1) = Math.Rnd * 100
- If i > 1 Then
- vDiff = vArr(i, 1) - vArr(i - 1, 1)
- If vDiff > 0# Then
- vMore = vMore + 1
- ElseIf vDiff < 0# Then
- vLess = vLess + 1
- End If
- End If
- Next i
- Range(Cells(1, 1), Cells(vLast, 1)).Value = vArr
- Range(Cells(1, 1), Cells(vLast, 1)).Interior.ColorIndex = XlColorIndex.xlColorIndexAutomatic
- isRandom = True
- If vMore > vLess Then
- If CDbl(vMore) / CDbl(vLast) > 0.505 Then isRandom = False
- ElseIf vMore < vLess Then
- If CDbl(vLess) / CDbl(vLast) > 0.505 Then isRandom = False
- End If
- If isRandom Then
- MsgBox "Массив заполнен случайными числами", vbInformation + vbOKOnly, "Ответ"
- ElseIf vMore > vLess Then
- For i = 2 To vLast
- vDiff = vArr(i, 1) - vArr(i - 1, 1)
- If vDiff < 0# Then Cells(i, 1).Interior.Color = vbRed
- Next i
- MsgBox "Массив возрастающий", vbInformation + vbOKOnly, "Ответ"
- ElseIf vMore < vLess Then
- For i = 2 To vLast
- vDiff = vArr(i, 1) - vArr(i - 1, 1)
- If vDiff > 0# Then Cells(i, 1).Interior.Color = vbRed
- Next i
- MsgBox "Массив убывающий", vbInformation + vbOKOnly, "Ответ"
- End If
- End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д