В массиве найти 3 максимальных числа и вывести их по убыванию - VB

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

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

Задача:

Требуется определить победителей среди участников соревнования, занявших первые три призовых места по наибольшему количеству очков. Количество участников соревнования не превышает 50 человек. Соревнование построено таким образом, что никакие два или несколько участников не могут набрать одинаковое количество очков. Входная информация представлена в виде массива положительных целочисленных очков участников. В выходной массив требуется занести индексы очков победителей соревнования из исходного массива в порядке возрастания номера их места (первое, второе, третье). Мне хотя бы просто описание как ее нужно решать

Решение задачи: «В массиве найти 3 максимальных числа и вывести их по убыванию»

textual
Листинг программы
Sub sort(A() As Integer, n As Integer)
    If A(n + 1) < A(n) Then Exit Sub
    c% = A(n + 1)
    For i% = n% + 1 To 1 Step -1
        If A(i%) > A(n% + 1) Then Exit For
    Next i%
    For j% = n% + 1 To i% + 1 Step -1
        If j% = 1 Then Exit For
        A(j%) = A(j% - 1)
    Next j%
    A(i% + 1) = c%
End Sub
 
Sub max_3a(A() As Integer, B() As Integer, n As Integer)
    For i% = 1 To UBound(A, 1)
        B(n + 1) = A(i%)
        sort B(), n%
    Next i%
End Sub
 
 
'::: Проверка:
 
Sub Test()
 
Dim A(1 To 10) As Integer
Dim B(1 To 10) As Integer
 
    A(6) = 6
    A(9) = 12
    A(5) = 5
    A(2) = 2
    A(8) = 11
    A(3) = 3
    A(1) = 1
    A(4) = 4
    A(7) = 9
    A(10) = 13
 
    n%=3
    
    max_3a A(), B(),n%
  
    For i% = 1 To 3
        Debug.Print B(i%)
    Next i%
    
End Sub

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


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

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

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