Помощь - Поиск - Пользователи - Календарь
Полная версия: Курсовая задача > Информатика / Программирование
Образовательный студенческий форум > Другие дисциплины > Информатика / Программирование
Florensita
Слушайте, народ, реально очень-очень поможете, если напишите ну если не решение, то хотя бы как специальным образом и каким обрабатывать звездочку. В звездочке кстати вся и проблема, это уже не просто поиск в тексте.

Задан текст, состоящий из нескольких строк, каждая из которых в свою очередь состоит из слов, разделенных пробелами. Подсчитать количество слов в тексте, совпадающих с заданным ключевым словом. При проверке совпадения слов символ «*»(звездочка) в начале или в конце слова обрабатывать специальным образом: считать его признаком того, что в проверяемом слове на этом месте может находится непустая последовательность произвольной длины, состоящая из любых символов, кроме пробела. Можно считать, что символ «*» в ключевом слове встречается 1 раз.

Например: Ключевое слово «кор*» будет совпадать со словами «корпус», «корабль» и т.п. или слову «корпус» могут соответствовать ключевые слова «*пус», «корп*» и т.п. Случай включения ключевого слова можно не рассматривать(т. е. ключ «прав*» не соответствует слову «управление»)

Заранее спасибо. smile.gif

AlexDemche
Ну а Вы сами думали над этой самой звездочкой? Какие идеи?
Ботаник
Звёздочку можно обрабатывать так:

Sub main()
Dim ИсходныйТекст As String
Dim Ключ As String
Dim ЗвёздочкаВпереди As Boolean
Dim ЗвёздочкаСзади As Boolean
Dim i As Integer, j As Integer, k As Integer
Const Пробел = " "

Debug.Print "---"
ИсходныйТекст = "Корабль с коркой плыл корпусом по морю субкорпускул"
'Добавляю пробелы в начало и в конец
ИсходныйТекст = Пробел & ИсходныйТекст & Пробел
Ключ = "кор*"

If (Left(Ключ, 1) = "*") Then
ЗвёздочкаВпереди = True
'Убираю звёздочку из ключа и добавляю пробел
Ключ = Right(Ключ, Len(Ключ) - 1) & Пробел
ElseIf (Right(Ключ, 1) = "*") Then
ЗвёздочкаСзади = True
'Убираю звёздочку из ключа и добавляю пробел
Ключ = Пробел & Left(Ключ, Len(Ключ) - 1)
End If

i = 1
Do
'Ищу строку ключа в тексте
j = InStr(i, ИсходныйТекст, Ключ)
If (j = 0) Then Exit Do
If (ЗвёздочкаСзади) Then
'Искать пробел правее ключа
k = InStr(j + 1, ИсходныйТекст, Пробел)
Debug.Print Mid(ИсходныйТекст, j, k - j)
End If
If (ЗвёздочкаВпереди) Then
'Искать пробел левее ключа
For k = j - 1 To 1 Step -1
If (Mid(ИсходныйТекст, k, 1) = Пробел) Then Exit For
Next k
If (k < 1) Then k = 1
Debug.Print Mid(ИсходныйТекст, k + 1, j - k + 1)
End If
i = j + 1
Loop
End Sub


Для ключа "*л" программа выдаёт:
---
плыл
субкорпускул

Для ключа "кор*" программа выдаёт:
---
Корабль
коркой
корпусом

Ха! Какой прикольный номер у моего сообщения: раз-два-три
Diablo
Помогите написать в паскале курсовик плиз
задача звучит так:
Написать простейший текстовой редактор.

зы: зарание благодарен
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2024 Invision Power Services, Inc.