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

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

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

> поиск символьных последовательностей
c-chopper
сообщение 11.05.2005 20:10
Сообщение #1





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

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


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

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


--------------------
artificial intelligence
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
c-chopper
сообщение 16.05.2005 20:53
Сообщение #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   поиск символьных последовательностей   11.05.2005 20:10
Altair   Предлагаю такой способ. Сначала выделяем вообще вс...   11.05.2005 23:29
Atos   Надо уточнить : имеется в виду последовательность ...   12.05.2005 7:29
c-chopper   любых, к сожалению как вам такой вариант: сохран...   12.05.2005 11:46
volvo   А как это отработает на таком массиве, например: ...   12.05.2005 12:00
c-chopper   найдёт ab, проверит какая буква следует за b обоих...   12.05.2005 16:52
volvo   Кстати, посмотри что я нашел: http://www.hardline....   12.05.2005 17:02
Atos   Хорошая статья! Да, и ещё момент тут надо ут...   13.05.2005 4:56
c-chopper   Atos необходимо найти самую длинную. в данном случ...   13.05.2005 8:40
volvo   :) Нет, я тебе как раз и дал ссылку, чтобы ты попр...   13.05.2005 8:59
Atos   :huh: :blink: Так ведь в твоём задании "Н...   14.05.2005 5:30
c-chopper   угу... я почему-то решил, что abababa часть строки...   14.05.2005 17:28
c-chopper   :fire: program individualnoe_n14; uses crt; type a...   16.05.2005 20:53
Atos   На первый беглый взгляд: 1) Можно открыть файл как...   17.05.2005 6:28
c-chopper   вроде да.... генерил файл, вставлял туда несколько...   17.05.2005 8:46
c-chopper   использовать можно всё, что считаешь нужным.   17.05.2005 14:58
volvo   Да пойми ты, что НЕ ДОЛЖЕН тебе никто ничего раст...   17.05.2005 15:43
c-chopper   да ничего я не требую! я лишь попросил. понят...   17.05.2005 18:25


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

 



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