Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 07.05.2013
Сообщений: 7

Из массива 10 чисел, вывести на экран 3 наибольших числа

07.05.2013, 13:23. Показов 2863. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста с лабой.
Буду очень благодарен.
Суть такая:
1) при массив из 10 чисел, вывести на экран 3 наибольших числа и их положение в массиве.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.05.2013, 13:23
Ответы с готовыми решениями:

Ввести массив из 10 чисел. Вывести 3 наибольших числа массива в трех разных окнах.
Ввести массив из 10 чисел. Вывести 3 наибольших числа массива в трех разных окнах. Окна появляются друг за другом через 2 сек, в течении...

Найти два наибольших числа, а третьи вывести на экран?
Найти два наибольших числа а третьи вывести на экран ? using System; using System.Collections.Generic; using System.Linq; using...

Ввести 10 чисел. Вывести на экран два наибольших из них
Всем привет. Изучаю С по Дейтелу и задачка поставила в тупик: Ввести 10 чисел. Вывести на экран два наибольших из них. Подскажите хотя...

9
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
07.05.2013, 14:17
Лучший ответ Сообщение было отмечено как решение

Решение

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
Private Sub Command1_Click()
Dim a, i
a = Array(1, 3, 2, 5, 4)
Print "Исходный массив"
For Each i In a: Print i;: Next
 
a = LargeInd(a, 3)
Print vbLf; "Наибольшие и их позиции"
For i = LBound(a) To UBound(a)
    Print a(i, 1), a(i, 2)
Next
 
End Sub
 
Function LargeInd(a, n As Long) As Variant()
 
'Функция для поиска n наибольших значений из массива (или коллекции) а
'Возвращает двумерный массив Variant(1 to n, 1 to 2),
'в первом столбце - значения по убыванию,
'во втором - их порядковые номера в исходном массиве (коллекции).
'Функция названа по аналогии с функцией НАИБОЛЬШИЙ (LARGE) в Excel.
 
Dim x, i&, j&, k&, ind&
ReDim b(1 To n, 1 To 2)
 
For Each x In a
    ind = ind + 1   'порядковый номер очередного элемента
    For i = 1 To j  'j - число уже найденных наибольших
        If x > b(i, 1) Then
            j = j + 1
            If j > n Then j = n
            For k = j To i + 1 Step -1
                b(k, 1) = b(k - 1, 1)
                b(k, 2) = b(k - 1, 2)
            Next
            b(i, 1) = x
            b(i, 2) = ind
            GoTo next_x
        End If
    Next
    If i <= n Then j = i: b(i, 1) = x: b(j, 2) = ind
next_x:
Next
LargeInd = b
End Function
5
0 / 0 / 0
Регистрация: 07.05.2013
Сообщений: 7
08.05.2013, 10:20  [ТС]
Спасибо большое!))
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
09.05.2013, 02:22
В массиве найти 3 максимальных числа и вывести их по убыванию
Поиск второго максимального значения в массиве
1
bmstu-team
 Аватар для antonboom
301 / 136 / 91
Регистрация: 10.01.2012
Сообщений: 420
Записей в блоге: 10
09.05.2013, 10:30
Не проще отсортировать по убыванию и вывести 3 первых?
Тем более массив одномерный)
1
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
13.05.2013, 18:45
antonboom, больше кода и больше операций = меньше быстродействие.
1
bmstu-team
 Аватар для antonboom
301 / 136 / 91
Регистрация: 10.01.2012
Сообщений: 420
Записей в блоге: 10
13.05.2013, 19:52
Где-то здесь была програмка по определению быстродействия от Catstail что ли...
0
13.05.2013, 20:09

Не по теме:

antonboom, а Вы сначала свой вариант выложите, тогда и потестируем. Не проблема.

Добавлено через 1 минуту

Цитата Сообщение от antonboom Посмотреть сообщение
програмка по определению быстродействия
как вариант Проход по всем словам, находящимся в переменной

0
bmstu-team
 Аватар для antonboom
301 / 136 / 91
Регистрация: 10.01.2012
Сообщений: 420
Записей в блоге: 10
13.05.2013, 20:53
Вы победили)

Цитата Сообщение от Николай1035 Посмотреть сообщение
1) при массив из 10 чисел, вывести на экран 3 наибольших числа и их положение в массиве.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Option Explicit
Option Base 1
Private Type mass
 a As Integer
 k As Integer
End Type
Private Sub Form_Load()
Randomize
Dim m(10) As mass: Dim i, j, p, p1 As Integer
For i = 1 To 10
m(i).a = Rnd * 201 - 100: m(i).k = i
Next
For j = 1 To 10
For i = 1 To 10 - j
If m(i).a < m(i + 1).a Then
p = m(i).a: m(i).a = m(i + 1).a: m(i + 1).a = p
p1 = m(i).k: m(i).k = m(i + 1).k: m(i + 1).k = p1
End If
Next: Next
For i = 1 To 3
Print Str(m(i).a) + "(" + Str(m(i).k) + ")"
Next
End Sub
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
13.05.2013, 22:52
antonboom, ну что же, так не интересно. Сдаваться и без боя. А где результаты?
Я хотел еще потягаться . Колбочку на обозрение не интересно. Хотя бы какие технологии английских лордов:


Кликните здесь для просмотра всего текста

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
Option Explicit
 
Private Sub main()
    Const Levels = 3
    
    Randomize
    Dim mass(1000000) As Long: Dim i&
    For i = LBound(mass) To UBound(mass)
        mass(i) = Int(Rnd * 2001) - 1000
    Next
    
    Dim sortAr() As Long
    sortAr = mass
 
    Dim perf As New Perfomance
 
    perf.Run "QSort"
 
    Call QSort(sortAr(), LBound(sortAr), UBound(sortAr))
 
    perf.StopCounter
 
    For i = UBound(sortAr) To UBound(sortAr) - Levels + 1 Step -1
        Debug.Print sortAr(i)
    Next
    
    perf.Run "MyMax"
    
    Dim max&(), pos&()
    Call FindMAx(mass, max, pos, Levels)
    
    perf.StopCounter
    
    Dim n&
    For n = 1 To UBound(max)
        Debug.Print max(n) & " on pos " & pos(n)
    Next
    
End Sub
 
Public Sub FindMAx(ByRef Ar() As Long, ByRef max() As Long, ByRef pos() As Long, ByVal Steps As Long)
    Dim tmpAr(), n&, thisStep&, InitPos&, max_() As Variant
    
    ReDim Preserve max_(1 To Steps)
    ReDim Preserve max(1 To Steps)
    ReDim Preserve pos(1 To Steps)
    
    ReDim tmpAr(UBound(Ar))
    
    For n = LBound(Ar) To UBound(Ar) 'Copy Long array into Variant Type Array
        tmpAr(n) = Ar(n)
    Next
    
    InitPos = LBound(Ar)
    
    For thisStep = 1 To Steps
    
        max_(thisStep) = tmpAr(InitPos)
        pos(thisStep) = InitPos
        
        For n = LBound(Ar) + 1 To UBound(Ar)
            If tmpAr(n) > max_(thisStep) Then
                If Not IsNull(tmpAr(n)) Then
                    max_(thisStep) = tmpAr(n)
                    pos(thisStep) = n
                End If
                
            ElseIf IsNull(max_(thisStep)) Then
                Do
                    InitPos = InitPos + 1 'Shift to the first not null element
                Loop While IsNull(tmpAr(InitPos)) And InitPos < UBound(Ar)
                
                If Not IsNull(tmpAr(n)) Then
                    max_(thisStep) = tmpAr(n)
                    pos(thisStep) = n
                End If
            End If
        Next
        tmpAr(pos(thisStep)) = Null
    Next
    
    For n = 1 To Steps 'Copy Variant array into Long type array
        max(n) = max_(n)
    Next
    
End Sub
 
Sub QSort(strArray&(), intBottom As Long, intTop As Long)
  Dim strPivot As String, strTemp As String
  Dim intBottomTemp As Long, intTopTemp As Long
 
  intBottomTemp = intBottom
  intTopTemp = intTop
 
  strPivot = strArray((intBottom + intTop) \ 2)
 
  While (intBottomTemp <= intTopTemp)
    While (strArray(intBottomTemp) < strPivot And intBottomTemp < intTop)
      intBottomTemp = intBottomTemp + 1
    Wend
    
    While (strPivot < strArray(intTopTemp) And intTopTemp > intBottom)
      intTopTemp = intTopTemp - 1
    Wend
    
    If intBottomTemp < intTopTemp Then
      strTemp = strArray(intBottomTemp)
      strArray(intBottomTemp) = strArray(intTopTemp)
      strArray(intTopTemp) = strTemp
    End If
    
    If intBottomTemp <= intTopTemp Then
      intBottomTemp = intBottomTemp + 1
      intTopTemp = intTopTemp - 1
    End If
  Wend
  If (intBottom < intTopTemp) Then QSort strArray, intBottom, intTopTemp
  If (intBottomTemp < intTop) Then QSort strArray, intBottomTemp, intTop
End Sub


Имя процедуры: QSort
Длительность: 6,0267290639 секунд.
1000
1000
1000
Имя процедуры: MyMax
Длительность: 0,2238258275 секунд.
1000 on pos 49
1000 on pos 1745
1000 on pos 2492
Помню мы когда-то в VBA такие бои устраивали на скоростя. У меня чаще всего был средний результат.
И тут приходил Казанский и всех обламывал
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.05.2013, 22:52
Помогаю со студенческими работами здесь

Не прибегая к сортировке, определить и вывести на экран N наибольших элементов массива
Задан массив X из 20 элементов и число N(N&lt;20). Не прибегая к сортировке, определить и вывести на экран N наибольших элементов массива

Вывести на экран элементы массива целых чисел в порядке возрастания их числа делителей
1 Получить все числа, которые входят в массив по одному разу 2 Вывести на экран элементы массива целых чисел в порядке возрастания их...

Удалить из массива целых чисел 3 наибольших простых числа
3 задача. Удалить из массива целых чисел 3 наибольших простых числа. P.S. С Уважением holygun.

Заполнить двумерный массив произвольными числами и вывести на экран сумму двух наибольших из этих чисел.
Здравствуйте, господа. Подскажите, пожалуйста, как заполнить двумерный массив произвольными числами и вывести на экран суму двух наибольших...

Вывести на экран различные элементы массива целых чисел в порядке возрастания их числа повторений
1. Вывести на экран различные элементы массива целых чисел в порядке возрастания их числа повторений. Добавлено через 7 часов 11 минут...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru