Страница: 1 |
Страница: 1 |
Вопрос: ProgressBar
Добавлено: 06.07.05 15:28
Автор вопроса: Nord
Два вопроса
1)Где взять прогресс бар
2)Есть фрагмент кода
for i=0 to n
for j=i to n
next
next
Как посчитать сколько осталось до конца выполнения этого кода и привязать к этому прогресс бар???
Ответы
Всего ответов: 12
Номер ответа: 1
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #1
Добавлено: 06.07.05 17:18
1) Project>Components...>Microsoft Windows Common Controls 6.0
2)
Max=n*n=n^2
value=i*j
Номер ответа: 2
Автор ответа:
Nord
Вопросов: 15
Ответов: 28
Профиль | | #2
Добавлено: 07.07.05 10:34
Хорошо но не пойдет!
Внутренний цикл начинает выполнятся быстрее. Соответственно выполняется быстре и внешний цикл. Тут надо посчитать немного по другому это как то наверно должно делаться через арифметическую или геометрическую прогрессию (не силен я в матре).
Нужно посчитать общее количество операций в циклах и взять их за 100 процентов, потом считать процент выполненных операций и находить сколько осталось выполнить.
Единственная проблемма как найти число операций в циклах???
Номер ответа: 3
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #3
Добавлено: 07.07.05 16:19
Ну, посчитай по офрмуле максимум, я же не видел твой код, потом например сделай так: в быстром цикле помести одну строчку Value=value+1, а в медленном помести эту строчку в двух местах. можешь замерять (если уж так надо) отношение времени работы большого и малого цикла и прибавляй Value в соответствующей пропорции. .... Блин, я сам понятия не имею о чём написал и не знаю сходу как сделать просто потому, что мне это не нужно, но если бы было нужно, я делал бы именно так
Номер ответа: 4
Автор ответа:
Neco
ICQ: 247906854
Вопросов: 133
Ответов: 882
Web-сайт:
Профиль | | #4
Добавлено: 08.07.05 02:01
Число операций он уже написал n^2. Если собирашеся регить вычисления только внешнего цикла, то бери за Max n и ставь value=i только во внешем цикле. Какие тут могут быть непонятки и при чём тут ваще математика? 8)
Номер ответа: 5
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #5
Добавлено: 08.07.05 02:16
2 Neco:
Всё таки он наверное прав: при таком раскладе прогресс бар будет двигаться неравномерно.
Номер ответа: 6
Автор ответа:
Neco
ICQ: 247906854
Вопросов: 133
Ответов: 882
Web-сайт:
Профиль | | #6
Добавлено: 08.07.05 02:20
Если внутренний цикл выполняется за одну секунду (просто предполагаю), то на выполнение всего кода понадобиться n секунд. И раз в секунду будет обновляться прогресс. Откуда неравномерность?
Да и вообще - задача прогресса не "равномерно показывать", а "показывать", что процесс худо-бедно, но идёт. 8)
Номер ответа: 7
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #7
Добавлено: 08.07.05 03:52
Да вобщем то верно, но видно человек хочет качества или может ему надо точно время расчитать - вдруг он офигенный полином считает? Я правильно понял?
Номер ответа: 8
Автор ответа:
Nord
Вопросов: 15
Ответов: 28
Профиль | | #8
Добавлено: 08.07.05 10:19
Какая разница какой код? Пусть будет к=к+1. Да прогресс бар действительно будет двигатся не равномерно. По времени большая часть будет выполнятся в первые 30%. Потом быстрее быстрее ...
n^2 не является количеством операций т.к.
Внешний цикл допустим выполнится 5 раз
Во внутреннем за первый раз внешнего цикла выполнится 5 повторов за второй 4 .. ,3, 2, 1
5
4 4
3 3 3
2 2 2 2
1 1 1 1 1
что то вроде этого
Прогресс бар действительно нужен для того что бы показать что процесс идет, а идет он примерно 2-3 минуты...
Не я считаю не офигенный полином, а ищу приблизительно одинаковые строки в текстовом файле (совпадение строк с похожих на 85... Строк в файле обычно достаточно много
Млин пока объяснял понял как решать! Решается просто, через формулу арифметической прогрессии.
Пасибо всем.
Номер ответа: 9
Автор ответа:
Neco
ICQ: 247906854
Вопросов: 133
Ответов: 882
Web-сайт:
Профиль | | #9
Добавлено: 08.07.05 20:27
Пардон муа - не заметил, что у тебя вложенный цикл начинается не с 0, а с i.
Ариф. прог. - она самая.
Но всё-таки я считаю, что имеет смысле сделать у прогресса max=n, а value=i и обновлять только во внешнем цикле - так оно быстрее будет, т.к. порой процесс становится дольше за счёт времни на вывод инфы. 8)
Номер ответа: 10
Автор ответа:
Виталий
Вопросов: 11
Ответов: 51
Web-сайт:
Профиль | | #10
Добавлено: 15.07.05 22:28
Nord
Бросить пример на мыло проги?
Номер ответа: 11
Автор ответа:
AASoft
Вопросов: 86
Ответов: 920
Профиль | | #11
Добавлено: 16.07.05 01:29
Бросить пример на мыло проги?
a ty ne eto imel vvidu:
Бросить пример проги на мыло?
Номер ответа: 12
Автор ответа:
Виталий
Вопросов: 11
Ответов: 51
Web-сайт:
Профиль | | #12
Добавлено: 16.07.05 10:10
Отвечу цитатой:
С русским предложением то же...