поиск наибольшего числа

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

поиск наибольшего числа

Сообщение kollaps » 24.03.2006 (Пт) 11:38

Здаравствуйте уважаемые форумчане, я еще новичок в программировании и поэтому у меня возникла такая проблема:
Имеетря четыре разноименных переменных содержащих числа типа Integer, как среди них выбрать наибольшее число? И еще, как будет выглядеть алгоритм выбора для N числел?

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

Сообщение GSerg » 24.03.2006 (Пт) 11:41

:shock:

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

JumpingJack
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 61
Зарегистрирован: 25.01.2006 (Ср) 12:54

Сообщение JumpingJack » 24.03.2006 (Пт) 14:05

Массив делай.. иначе никак.. :)

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 24.03.2006 (Пт) 14:07

JumpingJack писал(а):Массив делай.. иначе никак.. :)


а колекция?

kollaps
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 24.03.2006 (Пт) 11:30

Сообщение kollaps » 24.03.2006 (Пт) 16:28

Мучался мучался и кое что сделал
получилось вот кое что, может кому пригодиться

Dim Max As Integer
Dim i As Integer
Dim myarray(1 To 4) As Integer

myarray(1) = Z1
myarray(2) = Z2
myarray(3) = Z3
myarray(4) = Z4

Max = 1
For i = 2 To UBound(myarray)
If myarray(i) > myarray(Max) Then
Max = i
End If
Next i
print myarray(Max) & Max

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 24.03.2006 (Пт) 16:33

Метод пузырька?
Может, конечно, и пригодится, но сомневаюсь.
Lasciate ogni speranza, voi ch'entrate.

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 24.03.2006 (Пт) 16:34

Если массив большой то лучше всего его сортировать сперва.

А потом, искать методом этого, как его. Ну когда, берут середину диапазона....

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 24.03.2006 (Пт) 16:41

Рэй, ты чего???
Если массив отсортирован, зачем искать???
Lasciate ogni speranza, voi ch'entrate.

kollaps
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 24.03.2006 (Пт) 11:30

Сообщение kollaps » 24.03.2006 (Пт) 16:46

Ну вот, раскритиковали в пух и прах. Приведите пример чтобы не мучиться.

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 24.03.2006 (Пт) 16:48

Код: Выделить всё
sub ...()
const N as integer=4
dim mas(1 to N) as integer, max as integer, i as integer
mas(1)=...
mas(2)=...
...
mas(N)=...

max=mas(1)
for i = 2 to N
if mas(i)>max then max=mas(i)
next i

msgbox max
end sub

kollaps
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 24.03.2006 (Пт) 11:30

Сообщение kollaps » 24.03.2006 (Пт) 16:53

Ну и чем это отличается от моего примера?

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

Сообщение GSerg » 24.03.2006 (Пт) 16:56

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

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 24.03.2006 (Пт) 16:57

alibek

А! Блин! Да! Меня переклинило на поиск конкретного значения в массиве :)

kollaps
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 24.03.2006 (Пт) 11:30

Сообщение kollaps » 24.03.2006 (Пт) 17:01

Да, запиманается значение, а если нужно знать не только значение но и его индекс (что иногда полезнее).

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 24.03.2006 (Пт) 17:05

kollaps писал(а):Ну и чем это отличается от моего примера?

Я не говорил, что пузырьковая сортировка это отстой. Я говорил, что навряд-ли она кому-нибудь пригодится.
Точно также можно было бы выложить таблицу умножения -- вдруг пригодится.
Lasciate ogni speranza, voi ch'entrate.

kollaps
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 24.03.2006 (Пт) 11:30

Сообщение kollaps » 24.03.2006 (Пт) 17:09

У меня вот тут попутно еще вопорс возник: этот код ищет первое максимальное значение и выдает его и его индекс, а если все числа равны? или есть несколько равных чисел..... Если не сложно поделитесь своими соображениями.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 24.03.2006 (Пт) 17:15

А если все числа равны, какая тебе разница, какое из равных чисел использовать?
Lasciate ogni speranza, voi ch'entrate.

kollaps
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 24.03.2006 (Пт) 11:30

Сообщение kollaps » 24.03.2006 (Пт) 17:29

Хм, дело в том что каждая из разно именных переменных содержит какое-то число типа integer, но неизвестное число, так вот, требуется узнать максимальное. Ну если приводить абстрактный пример, то: есть таблица из трех столбиков: в первом столбике номер цеха по произвводству "чего-либо", во втором норма выработки этого "чего-либо", и, наконец, в третьем количество этого "чего-либо" реально выработанное цехом. Ну и например нужно узнать какой цех работает с наибольшей эффективностью в процентах (отношение второго столбика к первому умноженное на 100) и вывести этого рекордсмена в отдельной табличке с указанием номера цеха и количеством этих самых процентов. Тогда вопрос "если все числа равны"и "если несколько равны" очень актуален.

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

Сообщение GSerg » 24.03.2006 (Пт) 17:46

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

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 24.03.2006 (Пт) 18:13

alibek писал(а):Метод пузырька?


При чем здесь пузырек? Это ж не сортировка, а поиск максимального элемента. Походу, тебя, как и RayShade'а "переклинило" на другую задачу :D
Быть... или не быть. Вот. В чём вопрос?

GAGArin
Неистовый флудер
Неистовый флудер
 
Сообщения: 1777
Зарегистрирован: 23.12.2002 (Пн) 12:46
Откуда: я тут взялся, не знаю...

Сообщение GAGArin » 25.03.2006 (Сб) 2:56

Ага, тоже не врубаюсь причем тут пузырек и вообще сортировка. А по ходу второго вопроса, ну создай массив ответов. При нахождении большего значения сброс старых ответов и запись его в массив ответов, при нахождении равного просто добавление еще одного ответа. Хотя SQL действительно рулит на таких задачах ) Зачем писать то что уже есть?

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 27.03.2006 (Пн) 8:54

alibek писал(а):Я не говорил, что пузырьковая сортировка это отстой. Я говорил, что навряд-ли она кому-нибудь пригодится.


П приведенных примерах никакой сортировки не было вообще, да и не нужна она тут. Ну а пузырек я иногда использую - когда знаю что много значений по определению не будет, а массивчик нужно отсортировать... Чем плохо?
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 27.03.2006 (Пн) 9:01

Хм...
Видимо непонятно объяснил.
Пузырьковая сортировка -- это не плохо.
Это никому не нужно.
Не потому, что пользы от нее мало, а потому что алгоритм простой и любой его может реализовать самостоятельно и без примера в справочнике.
Lasciate ogni speranza, voi ch'entrate.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 27.03.2006 (Пн) 9:16

alibek писал(а):Хм...
Видимо непонятно объяснил.
Пузырьковая сортировка -- это не плохо.


Хм... Видимо тоже непонятно объяснил :wink:

Не было ее тут в примерах. Напрочь.
А первый разговор о ней завел кто? И по какой причине? :lol:
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

CORBA
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 179
Зарегистрирован: 22.11.2003 (Сб) 13:41
Откуда: Ukraine-Crimea-Feodosia

Сообщение CORBA » 27.03.2006 (Пн) 17:20

Идеалогию развели... блин.

Немного абстракции для усвоения... (лично мне легче запомнить алгоритм словестно)

"Метод кучки монет"
У нас есть кучка монет. Как найти самую тяжелую? Для этого берем первую и предполагаем что она самая тяжелая, берём следующую если она тяжелее, то старую отбрасываем и так до тех пор пока не переберём всю кучку. В конце у нас останется самая тяжелая.
У каждой сложной задачи есть множество простых для понимания, но неправильных решений.


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

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

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

    TopList  
cron