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

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

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

> поиск символьных последовательностей
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 9
Пол: Мужской

Репутация: -  0  +


:low:
Найти наиболее длинную последовательность символов, которая встречается в данном текстовом файле (без переводов строк, размер не более 10 килобайт) более одного раза.

единственное, что приходит в голову(пока, по крайней мере) это тупой перебор комбинаций символов. но это неправильно.
прошу помощи :molitva:


--------------------
artificial intelligence
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2





Группа: Пользователи
Сообщений: 9
Пол: Мужской

Репутация: -  0  +


:fire:
program individualnoe_n14;
uses crt;
type ar=array[1..10000] of ^char;
mass=^ar;
var
f:text;
name,found:string;
tekst:^mass;

{----------PROCEDURES-------------}
procedure GENER_FILE(var f:text);
{лень- двигатель процесса: генерим файл и вставляем в него что нужно найти}
var i:integer; c:byte;
begin
randomize;
rewrite(f);
for i:=1 to 24000 do begin
c:=random(123);
case c of
65..90: write(f,chr©);
97..122: write(f,chr©);
0..64,91..96: i:=i-1 end;
end;
close(f); writeln('File ',name,' is ready. Press any key'); readkey end;


procedure TEXT2MASS(var tekst:mass);
{для удобства работы перекидываем файл в массив.}
{ во избежание проблем с количеством памяти отправляем всё куда-нить подальше из 64 кб}
var w:char; i,j:integer;
begin new(tekst);
for i:=1 to 11000 do begin new(tekst^[i]); tekst^[i]^:='~' end;
i:=1;
reset(f);
while not eof(f) do begin
read(f,w); tekst^[i]^:=w; i:=i+1; {write(w); }end;
writeln('array is ready');
end;


procedure OCENKA(var found:string; tekst:mass); {понеслась.....}
var i,j,u,k:integer; srav:string;
begin
j:=1; i:=2; srav:=''; found:='';

while tekst^[j]^<>'~' do begin
if tekst^[j]^=tekst^[i]^ then begin
srav:=''; k:=j; u:=i; i:=i+1;
while tekst^[k]^=tekst^[u]^ do begin
srav:=srav+tekst^[k]^;
k:=k+1; u:=u+1
end;
end
else i:=i+1;
if length(srav)>length(found) then found:=srav;
if tekst^[i]^='~' then begin j:=j+1; i:=j+1 end;
end;
end;

{================PROGRAM BODY=============}
BEGIN
clrscr;
{writeln('Type a filename'); readln(name); assign(f,name); } assign(f,'c:\bigfile.txt');
{gener_file(f); }
text2mass(tekst^);
ocenka(found,tekst^);
writeln;
writeln('found=',found,'; consists of ',length(found),' chars'); readkey;
END.

ета фигня работает в TMT Pascal Lite в районе 1 секунды, а в долбанном BP от 5 до 10 с хвостом. проверять препод будет в борланде. после чего повесит мя на мышином кабеле.
SOS
если не хотите писать прогу, то хоть популярно растолкуйте алгоритм из приведённой выше ссылки. а то для первого курса сложновато как-то... мы по строкам галопом пробежали... и всяких подстрок с суффиксами и расширениями строки не проходили.... я как только начинаю читать тут же "повисаю" от кол-ва незнакомых терминов... sad.gif


--------------------
artificial intelligence
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
c-chopper   поиск символьных последовательностей   12.05.2005 0:10
Altair   Предлагаю такой способ. Сначала выделяем вообще вс…   12.05.2005 3:29
Atos   Надо уточнить : имеется в виду последовательность …   12.05.2005 11:29
c-chopper   любых, к сожалению как вам такой вариант: сохран…   12.05.2005 15:46
volvo   А как это отработает на таком массиве, например: …   12.05.2005 16:00
c-chopper   найдёт ab, проверит какая буква следует за b обоих…   12.05.2005 20:52
volvo   Кстати, посмотри что я нашел: http://www.hardline.…   12.05.2005 21:02
Atos   Хорошая статья! Да, и ещё момент тут надо ут…   13.05.2005 8:56
c-chopper   Atos необходимо найти самую длинную. в данном случ…   13.05.2005 12:40
volvo   :) Нет, я тебе как раз и дал ссылку, чтобы ты попр…   13.05.2005 12:59
Atos   :huh: :blink: Так ведь в твоём задании "Н…   14.05.2005 9:30
c-chopper   угу... я почему-то решил, что abababa часть строки…   14.05.2005 21:28
c-chopper   :fire: program individualnoe_n14; uses crt; type a…   17.05.2005 0:53
Atos   На первый беглый взгляд: 1) Можно открыть файл как…   17.05.2005 10:28
c-chopper   вроде да.... генерил файл, вставлял туда несколько…   17.05.2005 12:46
c-chopper   использовать можно всё, что считаешь нужным.   17.05.2005 18:58
volvo   Да пойми ты, что НЕ ДОЛЖЕН тебе никто ничего раст…   17.05.2005 19:43
c-chopper   да ничего я не требую! я лишь попросил. понят…   17.05.2005 22:25


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

 





- Текстовая версия 5.09.2025 6:08
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name