Как найти из энного числа чисел наибольшее?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
sufffa
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 08.03.2005 (Вт) 14:15

Как найти из энного числа чисел наибольшее?

Сообщение sufffa » 05.04.2005 (Вт) 18:57

Вобщем есть эн чисел, а как из них найти самое большое?

Заранее спс :)

xolod
Гуру
Гуру
 
Сообщения: 1162
Зарегистрирован: 15.01.2004 (Чт) 0:42
Откуда: Moscow

Сообщение xolod » 05.04.2005 (Вт) 19:03

Поместить в массив, в цикле сравниваться значения с эталоном (заведомо самым меньшим значением), если больше, запоминать число(или индекс массива) и эталон приравнивать к этому числу. К концу массива у тебя будет самое большое число.

Constant ERROR_SUCCESS deprecated. I'm so happy.
Программирование и дизайн – http://www.macrointellect.ru

sufffa
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 08.03.2005 (Вт) 14:15

Сообщение sufffa » 05.04.2005 (Вт) 19:07

А откуда взять этот эталлон? :roll:

hCORe
VB - Экстремал
VB - Экстремал
Аватара пользователя
 
Сообщения: 2332
Зарегистрирован: 22.02.2003 (Сб) 15:21
Откуда: parent directory

Сообщение hCORe » 05.04.2005 (Вт) 19:11

Код: Выделить всё
etalon = massiv(0)

если индексация массива начинается с нуля.
Моду создают модоки, а распространяют модозвоны.

sufffa
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 08.03.2005 (Вт) 14:15

Сообщение sufffa » 05.04.2005 (Вт) 19:15

Такс...туговато до меня доходит...
может пример приведете? :?:

хм...задача полюбому же имеет несколько путей решения так?
не хотелось бы связываться с массивами :wink:
Последний раз редактировалось sufffa 05.04.2005 (Вт) 19:26, всего редактировалось 1 раз.

hCORe
VB - Экстремал
VB - Экстремал
Аватара пользователя
 
Сообщения: 2332
Зарегистрирован: 22.02.2003 (Сб) 15:21
Откуда: parent directory

Сообщение hCORe » 05.04.2005 (Вт) 19:26

Код: Выделить всё
'Option Rtfm On
'Option Msdn Visit
'Option Must Work

Public Sub FindMaximum()
On Error Resume Next
    Dim arrDef() As Long
    Dim sNew As String
    Dim lUb As Long
    Dim i As Long
   
    Dim lMax As Long
   
    Do
        DoEvents
        sNew = InputBox("Enter a number to add or 'X' to skip")
        If Len(sNew) Then
            If Asc(sNew) = vbKeyX Then Exit Do
            lUb = UBound(arrDef)
            If Err <> 0 Then Err.Clear
            ReDim Preserve arrDef(lUb + 1)
            arrDef(lUb) = CLng(sNew)
        End If
    Loop
   
    lMax = arrDef(0)
   
    For i = 2 To lUb
        If arrDef(i - 1) > lMax Then lMax = arrDef(i - 1)
    Next i
   
    MsgBox "Maximum Element = " & Trim$(Str$(lMax))
End Sub
Моду создают модоки, а распространяют модозвоны.

sufffa
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 08.03.2005 (Вт) 14:15

Сообщение sufffa » 05.04.2005 (Вт) 19:28

:salut:
Ой спасибо :wink:

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 05.04.2005 (Вт) 21:18

Кстати, ппрямой перебор - это не самый быстрый способ нахождения минимума или максимума. Почитайте http://www.structur.h1.ru

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 05.04.2005 (Вт) 21:37

Alexanbar, а как иначе-то? В любом случае ты должен просмотреть каждый элемент. Значит, быстрее перебора здесь ничего нет.
Изображение

Samovar
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 111
Зарегистрирован: 23.05.2004 (Вс) 8:13

Сообщение Samovar » 05.04.2005 (Вт) 22:29

Ученье - свет, неученых - тьма.

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 05.04.2005 (Вт) 23:42

Да, похоже так. Видимо, спутал с методами сортировки

STanli
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 163
Зарегистрирован: 31.05.2004 (Пн) 15:22
Откуда: ТОМСК

Сообщение STanli » 17.04.2005 (Вс) 0:09

hCORe
Разве нельзя попроще, посто прогнать весь массив в итоге загоня в переменную наибольшее число?

Код: Выделить всё
o = chislo(0)
for i = 0 to N
if o < chislo(n) then o = chislo(n)
next i
Раз, два, три, четыре, пять, с детства с рифмой я дружу.

hCORe
VB - Экстремал
VB - Экстремал
Аватара пользователя
 
Сообщения: 2332
Зарегистрирован: 22.02.2003 (Сб) 15:21
Откуда: parent directory

Сообщение hCORe » 17.04.2005 (Вс) 14:56

STanli, код у тебя какой-то странный. Счетчик i, а индекс берешь от n. Тем более, зачем просматривать нулевой элемент, если ты уже задал стартовое максимальное значение?

И в чем разница между этими двумя кодами:

Код: Выделить всё
lMax = arrDef(0)
   
For i = 2 To lUb
    If arrDef(i - 1) > lMax Then lMax = arrDef(i - 1)
Next i


и

Код: Выделить всё
o = chislo(0)
for i = 1 to N
if o < chislo(i) then o = chislo(i)
next i


i и (i-1) - это непринципиально :roll:
Моду создают модоки, а распространяют модозвоны.

bevaine2000
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 159
Зарегистрирован: 15.04.2005 (Пт) 23:45

Сообщение bevaine2000 » 17.04.2005 (Вс) 21:51

Легче всего сделать сортировку по возрастанию в массиве, а самый последний и будет наибольшим.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 18.04.2005 (Пн) 8:20

Нет, легче всего пройтись по всем один раз.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 33

    TopList  
cron