Программирование
Веб программирование

Поиск минимального и максимального числа в массиве

 
 

Здарова. Сегодня я покажу вам как найти минимальное или максимальное число в массиве. Сначала найдем максимальное число, для этого напишем программу. Вот код:

Public Class Form1

    Dim a(10) As Integer ' Описываем массив из 10 элементов
    Dim max As Integer ' max - это максимальное число массива

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        For i = 1 To 10
            a(i) = Fix(Rnd() * 100) ' Задаем массив случайным образом, числами от 1 до 99
        Next


        max = 0 ' Значение max должно быть минимально возможным (т.к. в нашем случае все числа положительные, то будет достаточно и нуля)

        For i = 1 To 10
            If a(i) > max Then max = a(i) ' Сравниваем каждый элемент массива с max. Если он больше, то max равен данному элементу
        Next

        MsgBox("Максимум равен: " & max) ' Выводим сообщение с максимальным числом
    End Sub
End Class

А вот код для нахождения минимума:

Public Class Form1
    Dim a(10) As Integer ' Описываем массив из 10 элементов
    Dim min As Integer ' min - это минимальное число массива

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        For i = 1 To 10
            a(i) = Fix(Rnd() * 100) ' Задаем массив случайным образом, числами от 1 до 99
        Next

        min = 9999999 ' Значение min должно быть максимально возможным
        For i = 1 To 10
            If a(i) < min Then min = a(i) ' Сравниваем каждый элемент массива с min. Если он меньше, то min равен данному элементу
        Next

        MsgBox("Минимум равен: " & min) ' Выводим сообщение с минимальным числом
    End Sub
End Class

Есть вопросы? Спроси на нашем форуме!!
Карим [13.12.2011 13:49]

зачем это строка ? min = 9999999
если я правильно понял
то можно и так : min = a(1)

алексей [13.12.2011 17:02]

я то же думаю что можно и так

VOGANc12 [13.12.2011 22:59]

Верно

Гость [14.12.2011 09:06]

оо госпади люди ну что это такое?
что за неандерталький подход от vb6
a =Fix(Rnd() * 100)?? ведь рандомные числа еще можно получить и с помощью
Dim rnd As new Random
используем : rnd.Next(min, max)
где min минимальное значение
где max максимальное значение

triimeni [14.12.2011 11:28]

Уважаемый не подписавшийся, обрати внимание на название сайта. Всему свое время.

Met [14.02.2012 17:23]

Функция Fix отбрасывает от числа дробную часть .А функция int Отбрасывает дробную часть числа и возвращает целое значение. Вот в чем разница.
По этому надо писать fix(rnd * число)

Андрей [29.02.2012 09:09]

Проще написать будет так:
max=a.max
и соответственно
min=a.min
циклы в данном случае для vb.net не обязательны.

pjp07190 [14.02.2013 13:18]

Класс!!!

"Проще написать будет так:
max=a.max
и соответственно
min=a.min"
Действительно работает!!!!

anutik [06.03.2013 11:10]

Подскажите пожалуйста, если минимальное число должно принадлежать промежутку к примеру (2;14), как тогда?

pjp07190 [06.03.2013 12:18]

Допишите условие отбора

If a(i) =2 and a(i)<=14 Then min = a(i)

pjp07190 [06.03.2013 12:20]

Извиняюсь, как то так:
If a(i) =2 and a(i)<=14 Then min = a(i)

pjp07190 [06.03.2013 12:22]

Косяк в добавлении комментариев, вообщем нужно добавить условие принадлежности a(i) промежутку.

alex13sh300 [06.03.2013 12:34]

а наф так мучаться с циклами ??
В Vb.Net всё намного проще
берём массив И СОРТИРУЕМ стандартной функции сорт , сортирует от Максимальному к Минимальному
т.е. индекс 0 это самое максимальное число , индекс Ubound минимаьное число

pjp07190 [06.03.2013 12:37]

Вид функции привели бы, всем интересно.

pjp07190 [06.03.2013 12:40]

Задача то не отсортировать, а найти макс для заданного промежутка.

alex13sh300 [06.03.2013 13:37]

ну числа в массиве , я знаю что задача не отсортировать
просто отсортированный массив даёт куча плюсов
1)макс и мин проще простово найти
2) легко искать в нём любое значение

а если нужно сохранить оригинальный массив то создайте новый динамический массив с таким же типом
arrS = arr
arrS это сортированный массив а arr это оригинальный массив
и сортируем припомощи функции массив arrS

ПС Функцию я непомню и немогу узнать у меня Vb.Net нету (недавно принуждённо им пользовался)

там функция в колекции Math вроде

alex13sh300 [06.03.2013 13:39]

кстате с сортиоровкой всё намного проще
1) ненадо циклы делать
2) проблем с поиском мин и макс сводиться к 0 !
зачем бошку ломать зря?

alex13sh300 [06.03.2013 13:59]

Кажись вспомнил
Сортировка находится в колекции array
вроде так Array.Sort(arr)
arr - массив для сортировке

pjp07190 [06.03.2013 15:46]

anutik то спрашивает что? Отсортированный массив все равно придется просматривать для выделения в нем интервала (2;14), т.е. без цикла никак.

alex13sh300 [06.03.2013 16:12]

ты знаешь что такое бинарный поиск??
он возможен тока в отсортерованном массиве

к примеру если массив из 1000 числе
для поиска в нём нужно от 1 до 1000
а бинарный максимум для кол во 1000 будет 10 раз проходить! формула 2^i = N

понятно??

алгоритм бинарного писка прост (он и для массива строк подходит)
vbrus.narod(тчк)ru/Info2.htm#43

pjp07190 [06.03.2013 16:20]

Разговор слепого с глухим. Прочтите, что спрашивает anutik.

Coolhacker770 [06.03.2013 16:23]

Так, господа сионисты, sql.ru из вбока делать не надо. Священные воены идут на holywars.ru.

alex13sh300 [06.03.2013 16:39]

pjp07, ты тож недопонимаешь
я говорю что надо сначало отсортировать
и ему(anutik ) будет оч прото искать в этом промежутке т.к. легко найти этот промежуток

польза от сортирование это быстрота и легкасть поиска

Давай в скайп или чат
разберёмся , небудем здесь мусорить в коментах

Coolhacker770 [06.03.2013 16:44]

Айн: не всегда можно сортировать, даже по заданию
Цвайн: учим русский)
Драйн: разборок не устраиваем
Фир: в комментариях не мусорим
Фюнф: анютик - она

Coolhacker770 [06.03.2013 16:45]

Ненавижу записывать русскими буквами немецкие слова)

alex13sh300 [06.03.2013 22:49]

anutik ,
1) отсортировать ммассив
2) бинарный моиск числа входящего в твой промежуток (лучше самое минимальное чило промежутка) : nPsk- индекс массива найденного числа
3) 2 цикла n=nPsk+1: Do : :n=n+1 : loop until arr(n)>=min
n=nPsk-1: Do : :n=n-1 : loop until arr(n)<=max

Вот и усё)

ищём число и потом проходим до границ промежутка

EverybodyLies280 [06.03.2013 22:55]

Устроили хрен знает что, прекращайте)
Алекс, сортировать для сего массив - оверинжениринг.

Coolhacker770 [07.03.2013 06:26]

"Не матерись, сам ты оверинжениринг..." - подумал Алекс

pjp07190 [07.03.2013 08:20]

Буря в стакане воды... Никакой сортировки здесь не нужно, просто поиск максимума с условием попадания в интервал - один цикл с одним If-ом.

EverybodyLies280 [07.03.2013 10:44]

Кулхацкер, точно))

sergunya [20.05.2013 09:58]

Даны массивы Xi, i = 1, …, 15 и Yj, j = 1, …, 12. Найти максимальные
элементы массивов Xmax и Ymax. Определить, какой элемент меньше –
Xmax или Ymax – и на сколько.
help

alex13sh300 [20.05.2013 18:53]

в статье плохо объяснено?
делаем 2 переменные это максимум числа для Х и У
1)делаем цикл для перечисление элементов Х и в этом цикле делаем условие
Если МаксХ maxY then ну дальше всё понятно надеюсь)

Pikernot [07.08.2014 19:06]

Met,
Различие между Int и Fix состоит в том, что если Number отрицательно, то Int возвращает первое отрицательное число, меньшее или равное Number, тогда как Fix возвращает первое отрицательное число, большее или равное Number. Например, функция Int преобразует –8,4 в –9, а функция Fix — в –8.

Geller10 [25.09.2014 23:45]

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



Оставлять комментарии можно только зарегистрированным




Предупреждение: Вся информация представлена исключительно в образовательных целях.
Ни авторы, ни администрация не несут ответственности в случае ее использования в противозаконных целях.