Перебор символов

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
D3D
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 09.08.2011 (Вт) 20:04

Перебор символов

Сообщение D3D » 09.08.2011 (Вт) 20:46

Доброго времени суток! Как организовать перебор символов без повтора и вывести все варианты в ListBox?!!! Весь инет облазил для VB ни одного примера не нашёл.
Задача такова, на форме Text1.Text, Text2.Text, ListBox, Label и кнопка CommandButton. В Text1.Text вводим символы, значение Text2.Text должен равнятся мин. длине выводимых слов, а значение Text1.Text = макс. длине, т.е. если ввести "ABC" и поставить значение Text2.Text = "2", то результат должен получится примерно такой:
AB
AC
BA
BC
CA
CB
ABC
ACB
BCA
BAC
CAB
CBA

Есть код, (писал не я), отлично работает, но выводит только слова равные длине Text1.Text.
Может кто подскажет что в этом коде нужно изменить чтобы выводились все нужные мне варианты? Или кто даст даст готовый пример? :cry:
Заранее спасибо!
Собственно вот код:
Код: Выделить всё
Option Explicit
Dim sWord As String
Dim x As Long


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

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Re: Перебор символов

Сообщение Twister » 11.08.2011 (Чт) 10:46

А ведь вверху написано:
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
А я все практикую лечение травами...

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Перебор символов

Сообщение Хакер » 11.08.2011 (Чт) 12:05

Да нет, на самом деле вопрос здесь есть:
D3D писал(а):Может кто подскажет что в этом коде нужно изменить чтобы выводились все нужные мне варианты?

Поэтому открываю.

Ответ: вызывать VarWord "", sWord в цикле перебора длин слов.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

D3D
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 09.08.2011 (Вт) 20:04

Re: Перебор символов

Сообщение D3D » 11.08.2011 (Чт) 19:59

Хакер писал(а):
Ответ: вызывать VarWord "", sWord в цикле перебора длин слов.

Теория понятна, а как это воплотить в жизнь. ума не приложу. :roll:

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Перебор символов

Сообщение Хакер » 11.08.2011 (Чт) 20:51

Мы сожалеем :cry:
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 11.08.2011 (Чт) 21:25

Слова добавляются в список LstRes в лексикографическом порядке:
Код: Выделить всё
Private Sub Generate(ByVal Word As String, ByVal MinLen As Integer, MaxLen As Integer, ByVal MinCh As Integer, ByVal MaxCh As Integer)
  If Len(Word) >= MinLen Then LstRes.AddItem Word
 
  If Len(Word) < MaxLen Then
    Dim Ch As Integer
 
    For Ch = MinCh To MaxCh
      Generate Word & ChrW(Ch), MinLen, MaxLen, MinCh, MaxCh
      DoEvents
    Next Ch
  End If
End Sub
Вызвать так:
Код: Выделить всё
LstRes.Clear
Generate "", MinLen, MaxLen, MinCh, MaxCh

Если надо по длине - то цикл для длины и генерация слов такой длины.

D3D
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 09.08.2011 (Вт) 20:04

Re: Перебор символов

Сообщение D3D » 11.08.2011 (Чт) 21:57

Qwertiy
Огромное Вам спасибо! Это то чно нужно! :cheers:


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Google-бот и гости: 46

    TopList