Определение упорядоченности рандомного массива - 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