Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [VBA] Програмирование в Excel


Автор: lena918 23.11.2006, 20:22
Ребят кто знает как делать помогите!!!!Умоляю!!!!
“Офисное программирование”

1. Сформировать на листе Excel матрицу случайных чисел X , распределенных равномерно в диапазоне [Д1, Д2].  Значения Д1 и Д2 задаются с клавиатуры.
2. Провести фильтрацию полученных чисел “X”.      
Виды фильтрации:
 x   [max/7, max/3];

            3. Заполнить квадратную таблицу размерности “k” числами,  полученными после фильтра. Размерность k  вводится с клавиатуры.
4. Упорядочить полученную таблицу по заданному закону:       
расположить по возрастанию по диагоналям, параллельным второстепенной.
5.Модифицировать задачу с применением объектов управления на листе Ехел;например, кнопок,списков,окон со списками,счетчиков,с помощью которых  задаются исх. данные и проводится контроль вычислений.


Автор: RockClimber 23.11.2006, 22:31
Как у вас, батенька Леночка, запущено...
Если вы никогда раньше не программировали на VBA с применением объектов управления на листе Ехел;например, кнопок,списков,окон со списками,счетчиков,с помощью которых  задаются исх. данные и проводится контроль вычислений, то, боюсь, мне придется процитировать с полсотни страниц какого-нибудь толкового учебника по VBA...
Наводящий вопрос: попытки решений были? Чем закончились?

Автор: mihanik 24.11.2006, 07:50
Модератор: 

lena918, за Вас здесь никто ничего делать не будет.
Мы можем только помочь решать.
Т.е. давать советы, рекомендации, идеи, приводить/исправлять небольшие участки кода.

Как Вы думаете, может лучше будет перенести Ваш топик в "Центр помощи" данного форума?


Автор: mihanik 27.11.2006, 16:56
Модератор: 
Ответа нет.
Переношу в "Центр помощи"

Добавлено @ 16:58 
Перенёс из программирования, связанного с офисом...

Автор: Alexeis 27.11.2006, 18:06
Модератор: Название темы должно отражать ее суть!

Автор: lena918 27.11.2006, 22:19
Что такое сортировка методом пузырька???????????????

Автор: Alexeis 28.11.2006, 00:49
Цитата(lena918 @  27.11.2006,  22:19 Найти цитируемый пост)
Что такое сортировка методом пузырька?

Это тип сортировки заключающийся обмене позициями двух соседних элементов, так что элемент больший по величине получает больший индекс, а элемент меньший с меньшим. Сортировка осуществляется за много проходов по массиву и производится до тех пор пока за один полный проход не будет произведено ни одного обмена. Это и есть критерий окончания процесса сортировки.

Автор: Mercator 29.11.2006, 14:16
alexeis1, 
ну, если говорить точно, то все-таки обмена индексов - это косвенная сортировка, давайте лучше о прямой (хотя не суть важно). И вы несколько не точны - критерий останова, как правило, не используется при сортировке пузырьком. 
Его суть такова, что на каждом проходе массива наверх "всплывает" самый большой элемент (поэтому и пузырек), соответственно на следующем проходе последний элемент уже трогать не надо, после второго прохода не надо трогать последние 2 и так далее. Таким образом максимальное количество проходов определено количеством элементов массива и зашивается в пределы циклов (коих в данном алгоритме 2). Хотя, конечно, критерий очень полезен, если последовательность большая и практически вся отсортирована. С другой стороны операция сравнения занимает очень мало процессорного времени и можно не запариваться, как обычно с пузырьком и делают.

Автор: Alexeis 29.11.2006, 14:36
Цитата(Mercator @  29.11.2006,  14:16 Найти цитируемый пост)
Таким образом максимальное количество проходов определено количеством элементов массива и зашивается в пределы циклов (коих в данном алгоритме 2). Хотя, конечно, критерий очень полезен, если последовательность большая и практически вся отсортирована.

  Во во какой смысл использовать максимальное количество проходов, когда на практике сортировка часто заканчивается намного раньше? 

Автор: Alexeis 29.11.2006, 14:54
Вот, например, забивая массив длинны 30 случайными числами, после проведения 3-х тысяч тестов получил среднее количество необходимых проходов 24,5. 

Автор: Mercator 1.12.2006, 09:30
alexeis1, извините, но вы бы еще массив из 10 чисел забивали. Опять же, для такого количества элементов лишние сравнения займут такие доли секунд, что подобная экономия никоим образом не компенсирует время написания строчек для проверки критерия останова (не спорю, они примитивные, но время забивки занимают). Пузырек вообще зачастую используют как вспомогательную задачу для небольших массивов и пишут его уже на автомате двумя циклами и никто не парится. Предлагаю дополнить ваш тест 3-х тысяч раз кодом для проверки разности времени выполнения сортировки с двумя циклами и с остановом, на 30 элементах. Проверила бы сама, но пока негде и не на чем.

Автор: Alexeis 1.12.2006, 10:09
Mercator, 
Цитата(Mercator @  1.12.2006,  09:30 Найти цитируемый пост)
Опять же, для такого количества элементов лишние сравнения займут такие доли секунд
 если бы доли  smile , реально микросекунды (учитывая, что последний раз я протестил на 100000 сортировках), конечно этот метод не эффективен впринципе, но полезен в том смысле, что аналогичным образом работает быстрая сортировка. Я пробовал его также на массиве в 10000 элементов, но использование его для таких массивов уже попахивает маразмом smile.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)