Страница: 1 |
Проблема вот в чём. Пишу я переборщик паролей. Простой переборщик. Читаю код примера на эту тему: в нём такая структура: Dim S As String For B = 32 To 255 S = Chr(B) (проверка пароля) Next B For A = 32 To 255 For B = 32 To 255 S = Chr(A) & Chr(B) (проверка пароля) Next B Next A То есть, какая длина паролья столько будет и вложеных циклов, верно? А если мне надо будет угадать очень длинный пароль? Нее, так дело не пойдёт. Нужно чтоб прога сама (если это конеччно в принципе возможно) создавала вложенные циклы. Я написал кое-что (см. ниже), но есессно это не заработало: for i=1 to l for L(i)=32 to 255 next pwd="" for i=1 to l S=S & chr(i) next (checking password......) for i=1 to l next next Работать он должен был вот как: сначала мы L раз создаём цикл (строка 1,2,3). потом очищаем строку-пароль (строка 4). Затем генерируем эту строку-пароль заново (стр. 5,6,7). Потом проверяем , подходит ли пароль (стр. 8). Строки 9,10 и 11 L раз закрывают цикл. Может кто подскажет более работоспособный вариант вышеуказанного кода :-) ? Заранее благодарен.
Это конеччно в принципе возможно. Первое, что приходит в голову - использование рекурсивных алгоритмов. Ну, да... С рекурсией у меня хреново получается... Хотя идея супер! А можж кинуть какой нить примерчик, чтоб хоть разобрался? А то я с энтой фигнёй на паскале крутые веши писал, нечасто правда, если чесно всего один раз... да и то всё равно не заработало Страница: 1 |
Вопрос: Динамическое создание циклов
Добавлено: 24.03.04 14:54
Автор вопроса: Morpheus | Web-сайт:
Ответы
Всего ответов: 3
Номер ответа: 1
Автор ответа:
Pashenko
ICQ: 176176951
Вопросов: 14
Ответов: 655
Профиль | | #1
Добавлено: 24.03.04 15:43
Номер ответа: 2
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #2
Добавлено: 25.03.04 04:20
Номер ответа: 3
Автор ответа:
dem
Вопросов: 3
Ответов: 20
Профиль | | #3
Добавлено: 25.03.04 20:49
Зачем рекурсивные алгоритмы в такой задаче? Вы когда-нибудь пробовали писать
работу с большими числами? А это очень просто.
Вспомните, как происходит сложение столбиком. К примеру, чтобы прибавить 1 к
1999, нужно идти по числу 1999 справа налево: пока встречаем 9, заменяем его
на 0, иначе увеличиваем цифру на единицу и выходим.
У нас прибавление единицы к числу в 224-ричной системе счисления. Вот
примерный алгоритм:
N-число цифр (т.е. символов в пароле)
Dim Number(N) As Byte 'Строка представлена массивом, каждый элемент - код
символа
For i=1 to N 'Это минимальное число
Number(N)=32
Next i
'Начинаем перебор
Do
i=N
Do While Number(i)=255
Number(i)=32
i=i-1
Loop
If i=1 And Number(1)=255 Then 'Проверим, не перебрали ли уже все числа
MsgBox "Пароль не найден"
Exit Do
End If
Number(i)=Number(i)+1
Loop Until <Проверка пароля>