Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Перебор символов в строке / 5 сообщений из 5, страница 1 из 1
11.08.2011, 20:50
    #37391733
Eugen2011
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перебор символов в строке
Доброго времени суток! Как организовать перебор символов без повтора и вывести все варианты в ListBox?!!! Весь инет облазил для VB ни одного примера не нашёл.
Задача такова, на форме Text1.Text, Text2.Text, ListBox, Label и кнопка CommandButton. В Text1.Text вводим символы, значение Text2.Text должен равнятся мин. длине выводимых слов, а значение Text1.Text = макс. длине, т.е. если ввести "ABC" и поставить значение Text2.Text = "1", то результат должен получится примерно такой:

A
B
C
AB
AC
BA
BC
CA
CB
ABC
ACB
BCA
BAC
CAB
CBA

Есть код, (писал не я), отлично работает, но выводит только слова равные длине Text1.Text.
Может кто подскажет что в этом коде нужно изменить чтобы выводились все нужные мне варианты, или может у кого-то есть готовый пример?
Заранее спасибо!
Собственно вот код:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Option Explicit
Dim s As String
Dim x As Long


Private Sub Command1_Click()
List1.Clear
x =  0 
s = Text1.Text
Sm "", s
End Sub
Sub Sm(AlreadyS As String, s As String)
Dim i As Integer
  If Len(s) =  1  Then
    List1.AddItem AlreadyS + s
    DoEvents
    x = x +  1 
    Label1.Caption = x
    Exit Sub
  End If
  For i =  1  To Len(s)
    Sm AlreadyS + Mid$(s, i,  1 ), Left$(s, i -  1 ) + Mid$(s, i +  1 )
  Next
End Sub

Модератор: учимся оформлять код тэгами SRC
...
Рейтинг: 0 / 0
11.08.2011, 21:14
    #37391746
Ципихович Эндрю
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перебор символов в строке
Eugen2011,
в цикле
Накопитель = Накопитель & "&" & переменная & "&"
то есть как накопитель в одну строку все данные, и затем на сравнение через Like
If Накопитель Like "&" & переменная & "&" Then Beep
обрамляем амперсандами или чем то другим, чтобы не было подвоха
...
Рейтинг: 0 / 0
11.08.2011, 21:22
    #37391753
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перебор символов в строке
Ципихович Эндрю,
Не надо отвечать, если не понял вопрос.
...
Рейтинг: 0 / 0
11.08.2011, 22:40
    #37391791
скукотища
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перебор символов в строке
Eugen2011,
добавил в Ваш код две переменные, цикл и процедуру
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
Option Explicit
Dim s As String
Dim x As Long

'*******************************
Private Sub Command1_Click()
Dim i0%, i%
List1.Clear
x =  0 
s = Text1.Text
i0 = Int(Val(Text2.Text))
For i = i0 To Len(s)
    combo s, i
Next
End Sub
'*******************************
Sub Sm(AlreadyS As String, s As String)
Dim i As Integer
  If Len(s) =  1  Then
    List1.AddItem AlreadyS + s
    DoEvents
    x = x +  1 
    Label1.Caption = x
    Exit Sub
  End If
  For i =  1  To Len(s)
    Sm AlreadyS + Mid$(s, i,  1 ), Left$(s, i -  1 ) + Mid$(s, i +  1 )
  Next
End Sub
'*******************************
Sub combo(ss$, k%)
Dim i%, j%
If Len(ss) = k Then
    Sm "", ss
Else
    For i =  1  To Len(ss) - k +  1 
    If k =  1  Then
        combo Mid(ss, i,  1 ),  1 
    Else
    For j = i +  1  To Len(s) - k +  2 
        combo Mid(ss, i,  1 ) & Mid(ss, j, k -  1 ), k
    Next j
    End If
    Next i
End If
End Sub
...
Рейтинг: 0 / 0
11.08.2011, 22:55
    #37391802
Eugen2011
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перебор символов в строке
скукотища
Огромнейшее Вам спасибо!!! Именно то что мне было нужно.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Перебор символов в строке / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]