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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.286 из 5
Похожие ответы