45 / 1 / 0
Регистрация: 26.10.2012
Сообщений: 213
1

Выбрать 3 наибольших числа в массиве

29.10.2012, 16:00. Показов 1228. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите.
в массиве 11 ЦЕЛЫХ ЧИСЕЛ, каждое из которых > 0
Выбрать 3 наибольших и их вывести в порядке убывания.

Приведенный код выводит 100, 13 и 11, а должно быть 100, 13 и 12
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Dim A(11) As Integer
A = {100, 6, 12, 5, 2, 11, 3, 1, 4, 9, 13} '")
Dim max1 As Integer
        Dim max2 As Integer
        Dim max3 As Integer
        'max1 = A(0) ' присваиваю значение 0-го элемента массива
        max1 = 0
        max2 = 0
        max3 = 0
For i% = 0 To 10  
        If A(i%) > max1 Then 
                max1 = A(i%) 
                i% += 1
                Continue For
        ElseIf A(i%) > max2 Then
                max2 = A(i%)
                i% += 1
                Continue For
        ElseIf A(i%) > max3 Then
                max3 = A(i%)
        End If
Next i%
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.10.2012, 16:00
Ответы с готовыми решениями:

Пользователь вводит 4 числа.Найти разность двух наибольших из них
Помогите прописать код.Я разместил на поле 4 текстовых поля(textBox) и кнопку button1,а в 5 поле...

Опрделить в массиве и вывести на экран простые числа во введёном массиве
Занести в одномерный массив целые числа с клавиатуры. Опрделить в массиве и вывести на экран...

В одномерном массиве выбрать два числа по заданному условию
в одномерном массиве выбрать два числа так чтобы остальные элементы можно было распределить на три...

Из массива выбрать четыре наибольших значения
Дан массив фамилий студентов 1-го курса и массив их результатов в беге на 100 метров.Составьте...

3
Заблокирован
29.10.2012, 17:29 2
А так?
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
For i% = 0 To 10  
        If A(i%) > max1 Then 
                max3=max2
                max2=max1
                max1 = A(i%) 
                i% += 1
                Continue For
        ElseIf A(i%) > max2 Then
                max3=max2
                max2 = A(i%)
                i% += 1
                Continue For
        ElseIf A(i%) > max3 Then
                max3 = A(i%)
        End If
Next i%
0
69 / 59 / 15
Регистрация: 22.10.2012
Сообщений: 314
29.10.2012, 17:44 3
Апострофф прав

делая каждый шаг, A(i) уже не используется в дальнейшем
когда тебе 13 надо перенести в max2, то 12 должно перейти в max3, а у тебя этого не происходит
0
Почетный модератор
21400 / 9134 / 1083
Регистрация: 11.04.2010
Сообщений: 11,014
29.10.2012, 17:51 4
Если преподаватель разрешает использовать "встроенную" сортировку, то

VB.NET
1
2
3
        Dim A() As Integer = {100, 6, 12, 5, 2, 11, 3, 1, 4, 9, 13}
        Array.Sort(A)
        MsgBox("Max: " & A(A.Length - 1) & ", " & A(A.Length - 2) & ", " & A(A.Length - 3))
1
29.10.2012, 17:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.10.2012, 17:51
Помогаю со студенческими работами здесь

3 наибольших элемента в массиве
Код есть, но не знаю как подправить, выводит массив целиком #include <cstdlib> #include...

Ввести четыре числа. Вывести два наибольших числа
Ввести четыре числа. Вывести два наибольших числа

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

Найти сумму 2 наибольших значений в массиве
Ищу сумму 2 наибольших значений в массиве введенном с клавы(z). Надо чтобы а и б не были взяты с...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru