IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> задания на курсовую.
Михаил
сообщение 29.12.2002 19:53
Сообщение #1


Гость






Здравствуйте.. У меня проблемы с курсовой... срочно надо сдавать, а у меня даже наработок нет =( Помогите мне пожайлуста!!! А то погибну  

Вот задание:
Задан текст, состоящий из строк произвольной длины. Строки разделяются одним символом или несколькими, называемыми разделителями. Разделители одинаковы для всего текста. Текст заканчивается комбинацией двух специальных символов, отличных от разделителя.
Выполнить над текстом последовательность действий, указанную в задании:
а) Найти порядковые номера, считая от начала текста, определённых символов, которые задаются в исходных данных.
б) Сформировать новый текст, в котором каждый такой слог заключён в кавычки.

Может ещё не перевелись добрые люди на свете. Пожайлуста откликнитесь кто-нибудь!!!
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
___ALex___
сообщение 7.01.2003 3:21
Сообщение #2


Гость







program Search;
{$APPTYPE CONSOLE}
uses
SysUtils;
type
TBMTable = array[0..255] of Integer;

function BMSearch(StartPos: Integer; const S, P: String): Integer;
var
Pos, lp, i: Integer;
BMT: TBMTable;
begin

for i := 0 to 255 do BMT[i] := Length(P);
for i := Length(P) downto 1 do if BMT[Byte(P[i])] = Length(P) then
BMT[Byte(P[i])] := Length(P) - i;

lp := Length(P);
Pos := StartPos + lp -1;
while Pos <= Length(S) do
if P[lp] <> S[Pos] then Pos := Pos + BMT[Byte(S[Pos])] else
for i := lp - 1 downto 1 do if P[i] <> S[Pos - lp + i] then
begin
Inc(Pos);
Break;
end else if i = 1 then
begin
Result := Pos - lp + 1;
Exit;
end;
Result := 0;

end;

begin

WriteLn(BMSearch(1, 'dacf', 'cf'));
ReadLn

end.


Ф-ия ищет эффективным алгоритмым(упрощённая версия алгоритма Бойера-Мура) первое вхождение подстроки в строке.Легко исправить чтоб искала следующие вхождения(напиши если надо я тебе сделаю). Быстрый алгоритм поиска - это всё что тебе нужно для решения задачи!Пока

Сообщение отредактировано: Altair - 5.11.2005 18:34
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Михаил   задания на курсовую.   29.12.2002 19:53
Gid   Re: задания на курсовую.   5.01.2003 5:49
___ALex___   Re: задания на курсовую.   7.01.2003 3:21


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 21.06.2025 13:55
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"