Определение упорядоченности рандомного массива - VB

Узнай цену своей работы

Формулировка задачи:

Люди помогите, нужно сделать следующую прогу: 1) пользователь задает размерность массива, далее он заполняется случайными числами и выводится на экран. 2) далее необходим определить упорядочен массив или нет, если да то как по убыванию или по возростанию и вывести на экран как именно он упорядочен, если он не упорядочен, выделить две цифры "сбоя" упорядоченности в выведенном на экрне массиве красным цветом. P.S. когда мне это сказали меня вообще мозги взорвались, даже не представляю как это сделать, особенно с определением цифр сбоя и их выделением, помогите плз.

Решение задачи: «Определение упорядоченности рандомного массива»

textual
Листинг программы
  1. Private Function ToLong(ByVal this As String) As Long
  2. On Error GoTo errHandle:
  3.     Dim vResult As Long
  4.     vResult = CLng(this)
  5.     If vResult < 2 Then vResult = 0
  6.     ToLong = vResult
  7. Exit Function
  8. errHandle:
  9.     ToLong = 0
  10. End Function
  11.  
  12. Public Sub ArrayInfo()
  13.     Dim vArr() As Double, i As Long, isRandom As Boolean
  14.     Dim sLast As String, vLast As Long
  15.     Dim vLess As Long, vMore As Long, vDiff As Double
  16.     sLast = InputBox("Введите размерность массива", "Ввод", "100")
  17.     vLast = ToLong(sLast)
  18.     If vLast = 0 Then MsgBox "Не верная размерность массива", vbOKOnly + vbExclamation, "Ошибка": Exit Sub
  19.     Math.Randomize
  20.     ReDim vArr(1 To vLast, 1 To 1): ReDim vMark(1 To vLast)
  21.     vLess = 0: vMore = 0
  22.     For i = 1 To vLast
  23.         vArr(i, 1) = Math.Rnd * 100
  24.         If i > 1 Then
  25.             vDiff = vArr(i, 1) - vArr(i - 1, 1)
  26.             If vDiff > 0# Then
  27.                 vMore = vMore + 1
  28.             ElseIf vDiff < 0# Then
  29.                 vLess = vLess + 1
  30.             End If
  31.         End If
  32.     Next i
  33.     Range(Cells(1, 1), Cells(vLast, 1)).Value = vArr
  34.     Range(Cells(1, 1), Cells(vLast, 1)).Interior.ColorIndex = XlColorIndex.xlColorIndexAutomatic
  35.     isRandom = True
  36.     If vMore > vLess Then
  37.         If CDbl(vMore) / CDbl(vLast) > 0.505 Then isRandom = False
  38.     ElseIf vMore < vLess Then
  39.         If CDbl(vLess) / CDbl(vLast) > 0.505 Then isRandom = False
  40.     End If
  41.     If isRandom Then
  42.         MsgBox "Массив заполнен случайными числами", vbInformation + vbOKOnly, "Ответ"
  43.     ElseIf vMore > vLess Then
  44.         For i = 2 To vLast
  45.             vDiff = vArr(i, 1) - vArr(i - 1, 1)
  46.             If vDiff < 0# Then Cells(i, 1).Interior.Color = vbRed
  47.         Next i
  48.         MsgBox "Массив возрастающий", vbInformation + vbOKOnly, "Ответ"
  49.     ElseIf vMore < vLess Then
  50.         For i = 2 To vLast
  51.             vDiff = vArr(i, 1) - vArr(i - 1, 1)
  52.             If vDiff > 0# Then Cells(i, 1).Interior.Color = vbRed
  53.         Next i
  54.         MsgBox "Массив убывающий", vbInformation + vbOKOnly, "Ответ"
  55.     End If
  56. End Sub

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


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

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

7   голосов , оценка 4.286 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы