ПОНЯТНО О Visual Basic NET (том 2)

Поиск максимума и минимума


Ищем максимальное число.

Задача программисту: Найти максимальное из вводимых в компьютер чисел.

Задача рыбаку: Принести домой самую большую из выловленных рыб.

Решение рыбака: Рыбак приготовил для самой большой рыбы пустое ведро с водой. Первую пойманную рыбу рыбак не глядя бросает в это ведро. Каждую следующую рыбу он сравнивает с той, что в ведре. Если она больше, то он бросает ее в ведро, а ту, что была там раньше, выпускает в реку.

 Решение программиста: Программист приготовил для самого большого числа ячейку и придумал ей название, скажем, max. Первое число программист не глядя вводит в эту ячейку. Каждое следующее число (назовем его chislo) он сравнивает с max. Если оно больше, то он присваивает переменной max значение этого числа.

Напишем программу для определения максимального из 10 вводимых чисел:

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

        Dim max, chislo, i As Integer

        max = InputBox("Введите число")                  'первую рыбу - в ведро

        For i = 2 To 10                                                 'ловим остальных рыб:

            chislo = InputBox("Введите число")            'поймали очередную рыбу

            If chislo > max Then max = chislo             'и если она больше той, что в ведре, бросаем ее в ведро

        Next i



        Debug.WriteLine(max)                                      'несем самую большую рыбу домой

    End Sub

В этой программе переменная max исполняла роль «памяти». Она сохраняла в себе нужное значение и передавала его из цикла в цикл, благодаря чему каждый следующий цикл «знал», с чем сравнивать очередное число. Эта идея – использовать переменные для запоминания нужной информации на всем процессе выполнения программы – весьма продуктивна и широко используется программистами.

Примечание: Не путайте изобретенную нами переменную max со стандартной функцией Math.Max, которая нужна немножко для другого.


Задание 58.  
В нашей программе функция InputBox("Введите число") встречается два раза. Не всем нравится такая избыточность. А. Попробуйте избавится от одной из них, усложнив If. Б. Можно избавиться и по-другому: заранее присвоив переменной  max очень маленькое число, такое, что все числа заведомо больше него.
Ищем порядковый номер максимального числа. Дополним нашу программу, чтобы она искала также порядковый номер максимального числа из N заданных чисел, для чего организуем переменную Номер_макс_числа:
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        Dim max, chislo, i, N, Номер_макс_числа As Integer
        N = InputBox("Сколько чисел?")
        max = InputBox("Введите число")
        Номер_макс_числа = 1
        For i = 2 To N
            chislo = InputBox("Введите число")
            If chislo > max Then
                max = chislo
                Номер_макс_числа = i
            End If
        Next i
        Debug.WriteLine(max)
        Debug.WriteLine(Номер_макс_числа)
End Sub
Задание 59.        
Найти из N чисел минимальное. Каким по порядку было введено минимальное число?
Задание 60.        
У вас есть результаты забега на 100 метров (в секундах). Правда ли, что результат самого быстрого бегуна отличается от результата самого медленного больше, чем на 0,4 сек.?
Задание 61.        
На небе 10 звезд. Напечатайте координаты самой правой звезды.

Содержание раздела