Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Скорость счета Добавлено: 20.12.07 23:36  

Автор вопроса:  DkBobby
Делаю мелкую програмку, чтобы получить числа (всего должно получиться миллион вариантов):
000000
000001
000002
000003
000004
...(множество чисел)
999996
999997
999998
999999

Построил на основе вот такого кода:
printa - конечное число (с нулями, если надо, типа 000923)
a - просто число (1, 2, 3, 4 и т. д.)
zeros - кол-во нулей которое нужно вставить в начале числа
Private Sub Command1_Click()
Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
Dim a As String
Dim printa As String
Dim zeros As Integer
a = "999999"
printa = "999999"
Text1.Text = Val(a)
aminus:
If printa = "000000" Then

Else
a = Val(a) - 1
    If Len(a) < 6 Then
    zeros = 6 - Len(a)
    Select Case zeros
    Case 5
    printa = "00000" & a
    Case 4
    printa = "0000" & a
    Case 3
    printa = "000" & a
    Case 2
    printa = "00" & a
    Case 1
    printa = "0" & a
    End Select
    End If
    Text1.Text = Text1.Text & vbCrLf & printa
GoTo aminus
End If

End Sub

Но комп зависает! Можно как-нибудь ускорить процесс?

Ответить

  Ответы Всего ответов: 13  

Номер ответа: 1
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #1
Добавлено: 21.12.07 00:26
Во-первых, вместо
If printa = "000000" Then
Else
   '<...>
End If

надо писать так
If printa <> "000000" Then
   '<...>
End If

или так
If Not (printa = "000000";) Then
   '<...>
End If

Ответить

Номер ответа: 2
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #2
Добавлено: 21.12.07 00:41
Во-вторых, таймер тут ваще не в тему.
В-третьих, GoTo - НЕ ИСПОЛЬЗОВАТЬ. Если только при обработке ошибок..
В-четвертых, переменную a надо было объявлять As Long
В-пятых, есть чудо-функа Format. Код неимоверно сокращается:
Dim i As Long
For i = 0 To 999999
    Text1 = Text1 & Format(i, "000000";) & vbNewLine
Next i

В-щестых, уж лучше в массив записать, например:
Dim i As Long, a(0 To 999999) As String
For i = 0 To 999999
    a(i) = Format(i, "000000";)
Next i

В-седьмых, ЗАЧЕМ ЭТО НАДО??? Наверняка можно обойтись без подомных тормозных извращений. Что нужно по сути?

Ответить

Номер ответа: 3
Автор ответа:
 Yanex



ICQ: 387761649 

Вопросов: 32
Ответов: 169
 Web-сайт: Progr.Do.am
 Профиль | | #3
Добавлено: 21.12.07 08:34
В-седьмых, ЗАЧЕМ ЭТО НАДО???


Дайте угадаю. BS Corporation взламывает пароль для какого-нибудь сайта, программы, архива, файла... Вот ему и нужно для готовой проги сделать нужный TXT-файл. Я угадал? :)

Ответить

Номер ответа: 4
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #4
Добавлено: 21.12.07 13:31
printf("%06d", n); // :)

Ответить

Номер ответа: 5
Автор ответа:
 DkBobby



Вопросов: 6
Ответов: 20
 Профиль | | #5 Добавлено: 21.12.07 18:39
Не совсем.Нужно одному человечку подобрать пароль, при том что он цифровой. Я так подумал и решил что пароль (цифровой) может быть от 2 до 6 символов...

Ответить

Номер ответа: 6
Автор ответа:
 DkBobby



Вопросов: 6
Ответов: 20
 Профиль | | #6 Добавлено: 21.12.07 18:43
как Лонг пробовал, не хватает числового предела.
Комп все равно виснет с кодом
Dim i As Long, a(0 To 999999) As String
For i = 0 To 999999
    a(i) = Format(i, "000000";)
Next i

Как все это побыстрее сделать?

Ответить

Номер ответа: 7
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #7
Добавлено: 21.12.07 21:02
никак. написать на ассемблере

Ответить

Номер ответа: 8
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #8 Добавлено: 21.12.07 23:46
тупняк

Админ, закрывай тему!

Ответить

Номер ответа: 9
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #9
Добавлено: 22.12.07 01:13
да блин, а почему бы те не юзать Format(X, "000000";) прямо во время подбора пароля тчк

Ответить

Номер ответа: 10
Автор ответа:
 intel-DX



ICQ: 445091742 

Вопросов: 4
Ответов: 169
 Профиль | | #10 Добавлено: 22.12.07 08:15
Ну так еще чуть быстрее

Dim i As Long, a(0 To 999999) As String *6

Ответить

Номер ответа: 11
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #11
Добавлено: 22.12.07 12:58
ничуть так не быстрее =)

Ответить

Номер ответа: 12
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #12
Добавлено: 22.12.07 17:10
Executioner, разве не быстрей? почему?

Ответить

Номер ответа: 13
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #13
Добавлено: 22.12.07 17:46
сравни код в отладчике =) ничуть не быстрее. точно такие же ссылки на строки. оно будет работать чуточку быстрее в IDE, но не в скомпиленном варианте

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам