Страницы: 1
RSS
VBA. Вывести максимальный из элементов набора, Нужна помощь в решении задачи с двухмерными массивами
 
Всем хорошего дня! Нужна помощь в решении задачи. Я новичок в vba, многих вещей ещё не понимаю. Задача следующая:

Дано положительное число В и набор из десяти чисел. Вывести максимальный из тех элементов набора, которые больше В, а также его номер. Если
чисел, больших В, в наборе нет, то дважды вывести 0.

Моё решение:
Код
Sub vivod()
Dim B, A(3), C(3), k As Integer
For i = 1 To 3
A(i) = InputBox("введите 3 чисел")
Next
For i = 1 To 3
B = 5
If A(i) > B Then
C(i) = A(i) 'тут в массив С должны добавляться все элементы массива А, где A(i) > B. Но этого не происходит, добавляются все элементы массива А.
End If
Next
For i = 2 To 3
For j = 3 To i Step -1
If C(j) > C(j - 1) Then
B = C(j)
C(j) = C(j - 1)
C(j - 1) = B 'тут попарное сравнение для поиска наибольшего значения массива С, но этот алгоритм не решает поставленную задача
k = j
End If
Next
Next
MsgBox ("Макcимальное значение из массива A > числа B=" & B & " " & "и его порядковый номер=" & k)

End Sub
Последний пункт задачи я не стал реализовывать в коде.Сознательно уменьшил количество итераций до 3-х. Подскажите, есть ли общая ветка для ответов на вопросы новичков, чтобы не создавать каждый раз отдельную тему?
 
ierehon1, Здравствуйте, вы в массив A добавляете числа как текст,
место:
Код
InputBox("введите 3 чисел")

добавьте:
Код
CDbl(InputBox("введите 3 чисел"))
Вредить легко, помогать трудно.
 
Или объявить A(3) As Integer.
Частая ошибка после других языков - в VBA каждой переменной нужно указывать тип, если он имеет значение. Иначе будет Variant
 
ierehon1, приветствую!
Можно также использовать метод Inputbox объекта Application с указанием типа (параметр type) вводимого значения:
Код
A(i)= Application.InputBox("введите число:", type:=1)
И объявить массив массивом чисел, как писали коллеги выше.
Думаю, что более опытные товарищи подправят меня, если я ошибаюсь.
 
Всем большое спасибо за помощь!
Страницы: 1
Наверх