|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
09.05.2011, 16:51 | #1 |
Регистрация: 08.05.2011
Сообщений: 9
|
Задача с массивом (VBA)
В произвольном массиве E из n элементов найти наименьший элемент и записать его на первое место нового масива, а затем дописать в новый массив элементы, значение которых не меньше заданной константы (E >= const)
Начальные данные, что необходимо ввести, следует предварительно записать в избранные ячейки листа MS Excel и оттуда ввести их в программу. Выведение данных осуществить в другие ячейки листа. Массив ввела, минимальное нашла, а вот дальше - ступор(( Помогите пожалуйста. Заранее спасибо! То что у меня получилось: Sub Rabota() Dim i As Integer, A() As Integer, n As Integer, r As Integer Dim min As Single r = Val(InputBox("Введите номер ячейки", "Окно ввода", "1")) n = Val(InputBox("Введите размерность массива")) ReDim A(n) For i = 1 To n A(i) = Cells(r, 1) r = r + 1 Next i min = 1E+38 For i = 1 To n If A(i) < min Then min = A(i) Next i Debug.Print "min ="; min End Sub |
10.05.2011, 06:07 | #2 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Можно так:
Код:
Чем шире угол зрения, тем он тупее.
|
11.05.2011, 04:49 | #3 |
Регистрация: 08.05.2011
Сообщений: 9
|
спасибо за помощь
может подскажите хороший учебник по VBA? а то не хватает мне знаний((( заранее благодарствую |
11.05.2011, 11:39 | #4 |
Форумчанин
Регистрация: 30.01.2008
Сообщений: 314
|
а зачем все эти транспозы и редимы?
.resize и так запишет только нужные элементы.. да и в общем случае алгоритм неполон - если мин(a) вдруг окажется большим, чем MinValue, то это значение запишется в результате дважды.. не знаю, надо ли это.. если читать по-русски, то это противоречит слову "дописать".. в общем вот мой вариант: ) Код:
|
12.05.2011, 18:13 | #5 | |||
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Цитата:
Цитата:
Цитата:
Нужно ли все это, или нет - решать автору вопроса.
Чем шире угол зрения, тем он тупее.
|
|||
13.05.2011, 14:34 | #6 |
Форумчанин
Регистрация: 30.01.2008
Сообщений: 314
|
чувствую, что заводитесь
не стоит.. я лишь о том, что в радикальном случае у вас может получиться результирующий массив, больший первоначального - очень маловероятно, что так задумано. Скорее имелось ввиду: записать минимальный элемент, а из оставшихся в первоначальном массиве выбрать удовлетворяющие условию.. ну а то, что автор использует одномерные.. а если он код выложит с ошибками, вы же ошибки исправите? ответ, я считаю, должен быть максимально точным, в первую очередь, и максимально эффективным - во-вторую.. |
13.05.2011, 17:27 | #7 | |||
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Цитата:
Цитата:
Повторяюсь, что мы с Вами "домысливаем" требуемый ответ на неточно сформулированный вопрос. Но, опять же, если внимательно прочитать задание, то из него вовсе не следует, что данные, которые требуется занести в исходный массив, находятся в непрерывном диапазоне ячеек рабочего листа. А если по диагонали? Возможно автор не случайно пытается записывать элементы массива, индивидуально указывая адрес каждого. Цитата:
Чем шире угол зрения, тем он тупее.
Последний раз редактировалось SAS888; 13.05.2011 в 17:36. |
|||
14.05.2011, 12:54 | #8 |
Форумчанин
Регистрация: 30.01.2008
Сообщений: 314
|
вот я, как раз, и даю ему альтернативу
а к алгоритму претензии есть? жду критики.. |
15.05.2011, 05:49 | #9 | |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Цитата:
Код:
Чем шире угол зрения, тем он тупее.
|
|
16.05.2011, 09:40 | #10 |
Форумчанин
Регистрация: 30.01.2008
Сообщений: 314
|
конечно интересует.
по алгоритму: первый мой цикл - это тоже самое, что у Вас b(1, 1) = Application.Min(a) встроенная функция, конечно, чуть быстрее перебирает, но без цикла тоже не обходится, так что отсутствие цикла лишь видимость.. зато у меня еще и номер находит.., что позволяет избежать во втором цикле лишнего сравнения.. конечно, надо сравнить тупо по скорости.. но щас лень |
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Задача с массивом (VBA) | mad_moon | Помощь студентам | 0 | 08.05.2011 14:19 |
Проблема с двумерным массивом в VBA | HellkilleR | Microsoft Office Excel | 2 | 30.03.2010 05:48 |
Задача с массивом! | kloyn91 | Microsoft Office Excel | 7 | 09.11.2009 09:17 |
задача с массивом | bonys91 | Помощь студентам | 5 | 26.03.2009 22:13 |