Страница 2 из 3

Re: Задачи на массивы в Vb

Добавлено: 10 апр 2007, 16:14
Pavel55
Хм, если там нет Min, Max, тогда можно попробывать циклом (перебором), сравнивая каждый элемент массива с другим и таким методом найти Min и Max.

Может кто что подскажет нам ?

Вот посмотрите пример нахождение мин. значения в массиве
http://personnel.uapa.ru/print.asp?id=8 ... 2%E3..html

Re: Задачи на массивы в Vb

Добавлено: 10 апр 2007, 17:17
Pavel55
Исходя из той логике, я думаю, вашу задачу можно решить так

Код: Выделить всё

Dim iArray() As Single
Dim i%, n%, Min!, Max!
Private Sub CommandButton1_Click()
    Me.Hide
    n = Me.TextBox1.Text 'Колличество элементов в массиве
    ReDim iArray(1 To n)
    For i = 1 To n
        iArray(i) = InputBox("Введите " & i & "-е значение для массива", "Заполнение массива")
        If iArray(i) = 0 Then i = i - 1 'защита от ввода нуля и нажатия кнопки Отмена
    Next
    n = UBound(iArray())
    'Находим Min
    Min = 10000
    For i = 1 To n
        If iArray(i) < Min Then
            Min = iArray(i)
        End If
    Next
    'Находим Max
    Max = 0
    For i = 1 To n
        If iArray(i) > Max Then
            Max = iArray(i)
        End If
    Next
    Me.TextBox1.Text = Min + Max
    Me.Show
End Sub
Хотя может кто-то предложит что-то проще

Re: Задачи на массивы в Vb

Добавлено: 10 апр 2007, 18:22
Aent
&quot писал(а):может кто-то предложит что-то проще
Я бы циклы объединил в один. Зачем проходить по массиву дважды ?

Re: Задачи на массивы в Vb

Добавлено: 10 апр 2007, 20:53
Pavel55

Код: Выделить всё

Dim iArray() As Single
Dim i%, n%, Min!, Max!
Private Sub CommandButton1_Click()
    Me.Hide
    On Error Resume Next
    n = Me.TextBox1.Text 'Колличество элементов в будущем массиве
    If n = 0 Then
        MsgBox "Укажите размерность массива"
        Me.Show
    End If
    ReDim iArray(1 To n)
    For i = 1 To n
        iArray(i) = InputBox("Введите " & i & "-е значение для массива", "Заполнение массива")
        If iArray(i) = 0 Then i = i - 1 'защита от ввода нуля и нажатия кнопки Отмена
    Next
    Min = 10000
    For i = 1 To n
        If iArray(i) < Min Then Min = iArray(i)
        If iArray(i) > Max Then Max = iArray(i)
    Next
    Me.TextBox1.Text = Min + Max
    Me.Show
End Sub

Re: Задачи на массивы в Vb

Добавлено: 11 апр 2007, 10:29
Avsha
Min = 10000
Обычно за начальный Min и Max берется 1-ый элемент массива, а поиск начинается со второго.

Re: Задачи на массивы в Vb

Добавлено: 11 апр 2007, 11:44
Pavel55
Кто ещё что интересного подскажет ?

Код: Выделить всё

Option Explicit
Dim iArray() As Single
Dim i%, n%, Min!, Max!
Private Sub CommandButton1_Click()
    Me.Hide
    On Error Resume Next
    n = Me.TextBox1.Text 'Колличество элементов в будущем массиве
    If n = 0 Then
        MsgBox "Укажите размерность массива"
        Me.Show
    End If
    ReDim iArray(1 To n)
    For i = 1 To n
        iArray(i) = InputBox("Введите " & i & "-е значение для массива", "Заполнение массива")
        If iArray(i) = 0 Then i = i - 1 'защита от ввода нуля и нажатия кнопки Отмена
    Next
    Min = iArray(1) 
    Max = iArray(1)
    For i = 2 To n
        If iArray(i) < Min Then Min = iArray(i)
        If iArray(i) > Max Then Max = iArray(i)
    Next
    Me.TextBox1.Text = Min + Max
    Me.Show
End Sub

Re: Задачи на массивы в Vb

Добавлено: 12 апр 2007, 15:29
Firefly
Ух ты... спасибо =)) щас проверю все версии =)))

Re: Задачи на массивы в Vb

Добавлено: 12 апр 2007, 16:04
Pavel55
))) а зачем все ? Это же одна и та же версия (логика), только последния версия более оптимизирована.

Re: Задачи на массивы в Vb

Добавлено: 12 апр 2007, 16:55
Aent
Можно соптимизировать код

Код: Выделить всё

Dim t as single
...................
'В цикле
t = iArray(i)
If t < Min Then 
      Min = t
ElseIf t > Max Then 
      Max = t
end if

Re: Задачи на массивы в Vb

Добавлено: 12 апр 2007, 18:11
Firefly
Pavel55, все работает!
спасибо=)))))))))))))))))))

а вторую задачку в простом варианте, типа для на смертных мона? )))