Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ задания на курсовую.

Автор: Михаил 29.12.2002 23:53

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

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

Может ещё не перевелись добрые люди на свете. Пожайлуста откликнитесь кто-нибудь!!!

Автор: Gid 5.01.2003 9:49

Переводишь текст в тип string а затем...Короче, куда посылать готовую прогу?

Автор: ___ALex___ 7.01.2003 7:21


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.


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