Определение упорядоченности рандомного массива - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д