Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Basic / VBA


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Basic/VBA

Выпуск № 609
от 10.09.2007, 13:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 295, Экспертов: 46
В номере:Вопросов: 1, Ответов: 2


Вопрос № 100914: Народ! Помогите, плиизз, Задание. Расстояние между двумя словами равной длины—это количество позиций, в которых различаются эти слова. В заданном предложении найти пару наиболее далеко удаленных слов заданной длины. Хотябы сам принцип!...

Вопрос № 100.914
Народ! Помогите, плиизз, Задание. Расстояние между двумя словами равной длины—это количество позиций, в которых различаются эти слова. В заданном предложении найти пару наиболее далеко удаленных слов заданной длины.

Хотябы сам принцип!

Приложение:

Отправлен: 05.09.2007, 13:20
Вопрос задал: Кайманаков Дмитрий Евгеньевич (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Rud Alexey Yruievich
Здравствуйте, Кайманаков Дмитрий Евгеньевич!
Если я правильно понял постановку задачи, то нам достаточно разбить фразу на слова, после чего выделить все слова нужной длины и поместить их в масив строковых переменных. Можно также при формировании массива устроить проверку слова на уникальность (т.е нет ли уже в массиве идентичного ему слова). В сформированом масиве слов сравнивать посимвольно каждое слово со всеми стоящими после него (с предыдущими уже не имеет смысла - с ними сравнивались раньше). Если у нас символы в словах не совпадают - увеличиваем некий счетчик на единицу. В конце сравнения двух слов сравниваем значение счетчика с предыдущим. Если оно больше - запоминаем новое значение и номера сравниваемых слов.
В конце получаем максимальное расстояние между словами и номера искомых слов в масиве. Все просто.
Если что-то осталось непонятным - пишите, разъясню
Ответ отправил: Rud Alexey Yruievich (статус: 2-ой класс)
Ответ отправлен: 05.09.2007, 14:17
Оценка за ответ: 4
Комментарий оценки:
Спасибо. Попробую разобраться.

Отвечает: Черников Игорь Владимирович
Здравствуйте, Кайманаков Дмитрий Евгеньевич!
Создайте Документ Microsoft Word.doc, вставьте в него любой текст, создайте макрос, вставте в макрос этот код и запустите его. Удачи!

Sub Макрос1()
Dim НомерПредложения As Integer
Dim символ As String
Dim ТекущийСимвол As Double
Dim предложение As String
Dim ПервоеСловоНайдено As Boolean
Dim ВтороеСловоНайдено As Boolean

НомерПредложения = InputBox("Введите номер предложения, в котором нужно искать", "Ввод данных")
КолличествоБуквВСлове = InputBox("Введите количество букв в словах", "Ввод данных")
Selection.EndKey Unit:=wdStory
Selection.TypeText Text:=Chr(182)
Selection.HomeKey Unit:=wdStory
Начало_предложения = 1
Конец_предложения = 1

Do
символ = ActiveDocument.Range(Start:=Selection.End, End:=Selection.End + 1)
ТекущийСимвол = ТекущийСимвол + 1
If символ = "." Then
Начало_предложения = Конец_предложения
Конец_предложения = ТекущийСимвол
ПорядковыйНомерПредложения = ПорядковыйНомерПредложения + 1
End If
If НомерПредложения = ПорядковыйНомерПредложения Then
предложение = ActiveDocument.Range(Start:=Начало_предложения, End:=Конец_предложения)
For i = 1 To Len(предложение)
символ = Mid(предложение, i, 1)
If символ = " " Or символ = "," Or символ = Chr(10) Or символ = Chr(13) Then
If CInt(КолличествоБуквВСлове) = Len(слово) And ПервоеСловоНайдено = False Then
ПервоеСловоНайдено = True
ПервоеСлово = слово
НомерСимволаПослеПервогоСлова = i
GoTo 10
End If
If Len(слово) = CInt(КолличествоБуквВСлове) And ПервоеСловоНайдено = True Then
ВтороеСловоНайдено = True
ВтороеСлово = слово
НомерСимволаПередВторымСловом = i - Len(слово) - 1
End If
10 слово = ""
Else
слово = слово + символ
End If
Next i
If ПервоеСловоНайдено = False Then
MsgBox ("В этом предложении не найдено слов с таким количеством символов")
GoTo 11
End If
If ПервоеСловоНайдено = True And ВтороеСловоНайдено = False Then
MsgBox ("В этом предложении найдено только одно слово с таким количеством символов")
GoTo 11
End If
If ПервоеСловоНайдено = True And ВтороеСловоНайдено = True Then
MsgBox ("Первое слово - " + ПервоеСлово + ", второе слово - " + ВтороеСлово + "." + Chr(10) + _
"Расстояние между ними - " + CStr(НомерСимволаПередВторымСловом - НомерСимволаПослеПервогоСлова) + " символа.")
GoTo 11
End If
Stop
End If
Selection.MoveRight Unit:=wdCharacter, Count:=1
Loop While Not символ = Chr(182)
11 Selection.EndKey Unit:=wdStory
Selection.MoveLeft Unit:=wdCharacter, Count:=1
Selection.Delete
End Sub
---------
От каждого по способностям, каждому по труду
Ответ отправил: Черников Игорь Владимирович (статус: 4-ый класс)
Ответ отправлен: 05.09.2007, 18:22


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.58 от 30.08.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное