Как определит слова, в которых есть одинаковые буквы?

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

Как определит слова, в которых есть одинаковые буквы?

Сообщение Раиса » 17.12.2015 (Чт) 12:04

Текст вводится через TextBox. Вывести все слова, в которых есть одинаковые буквы и количество слов, в которых все буквы разные.Сделать эту проверку через оператор Like. Результат выводится так же в TextBox.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Как определит слова, в которых есть одинаковые буквы?

Сообщение alibek » 17.12.2015 (Чт) 12:53

Like тут неуместен.
Lasciate ogni speranza, voi ch'entrate.

Vi
Постоялец
Постоялец
 
Сообщения: 739
Зарегистрирован: 25.01.2002 (Пт) 11:03
Откуда: Россия, Ижевск

Re: Как определит слова, в которых есть одинаковые буквы?

Сообщение Vi » 17.12.2015 (Чт) 14:27

alibek писал(а):Like тут неуместен.

Сдаётся мне, что это так задано.
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! (с) КВН

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2941
Зарегистрирован: 31.08.2007 (Пт) 4:41

Re: Как определит слова, в которых есть одинаковые буквы?

Сообщение Proxy » 17.12.2015 (Чт) 18:17

Тогда, кажется, Like поможет только найти, входит ли символ в строку. Не могу иного pattern-а придумать, чтобы составить его из проверяемого слова, притом одним действием проверить.
ИМХО тут предполагается брать из второго проверяемого слова посимвольно и с помощью like проверять вхождение данного символа в первое проверяемое слово (если есть, инкрементим счетчик). Пары слов — все сочетания из n по 2 (не размещения). При каждой итерации сбрасываем счетчик (впрочем тут boolean), если по окончании он не нулевой, то оба слова помечаем. Помеченные слова выводим в TextBox.
Follow the white rabbit.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Как определит слова, в которых есть одинаковые буквы?

Сообщение alibek » 18.12.2015 (Пт) 8:59

Ну почему, если проверять на все возможные сочетания "аа", "бб", "вв" и далее, то LIKE вполне подойдет.
Но тогда еще больше подойдет обычный INSTR.
Поэтому повторюсь, что в этой задаче LIKE бесполезен. Нужен или перебор возможных сочетаний с INSTR, или регулярные выражения.
Lasciate ogni speranza, voi ch'entrate.

Vi
Постоялец
Постоялец
 
Сообщения: 739
Зарегистрирован: 25.01.2002 (Пт) 11:03
Откуда: Россия, Ижевск

Re: Как определит слова, в которых есть одинаковые буквы?

Сообщение Vi » 18.12.2015 (Пт) 13:47

alibek писал(а):Поэтому повторюсь, что в этой задаче LIKE бесполезен. Нужен или перебор возможных сочетаний с INSTR, или регулярные выражения.

Код: Выделить всё
Private Function HasSameLetters(ByVal sWord As String) As Boolean
  Dim i As Long, s As String
  s = UCase(sWord)
  For i = 1 To Len(s)
    HasSameLetters = CheckSameLetter(s, Mid(s, i, 1))
    If HasSameLetters Then
      Exit For
    End If
  Next
End Function

Private Function CheckSameLetter(ByVal sWord As String, ByVal sLetter As String) As Boolean
  CheckSameLetter = sWord Like "*" & sLetter & "*" & sLetter & "*"
End Function

Регуляркой, конечно, без перебора за один запрос можно определить.

PS
? HasSameLetters("teeth")
True
? HasSameLetters("dog")
False
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! (с) КВН

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2941
Зарегистрирован: 31.08.2007 (Пт) 4:41

Re: Как определит слова, в которых есть одинаковые буквы?

Сообщение Proxy » 18.12.2015 (Пт) 19:44

alibek писал(а):Ну почему, если проверять на все возможные сочетания "аа", "бб", "вв" и далее, то LIKE вполне подойдет.

Ох, пардон, я неверно трактовал условия задачи.
Вывести все слова, в которых есть одинаковые буквы и количество слов

Я полагал, что здесь речь о сравнении букв в сочетаниях слов. Есть совпадающие буквы между словами — в список.
"Кактус", "Гладиолус", "Яд" — "Кактус", "Гладиолус" считаем (т.к. "а" и "у"), "Яд" — отбрасываем.
Нужно больше спать :)
alibek писал(а):Поэтому повторюсь, что в этой задаче LIKE бесполезен.

Это условие, кмк.
Follow the white rabbit.


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

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

Сейчас этот форум просматривают: SemrushBot и гости: 24

    TopList