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

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

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

> поиск в строке, помигите найти ошибку
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 99
Пол: Женский
Реальное имя: vera

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


Строка называется m-знаковой, если она содержит m различных знаков. Строки a, ab und abcbaac 3-знаковые, а строка abcd 4-знаковая.
Дана строка s и число m , так что 1 <= m <= Length(s).
Необходимо написать
FUNCTION MaxMChainLen(s: STRING, m: INTEGER): INTEGER;
которая вычисляет длину самой длинной m-знаковой строки, которая содержится в строке s.

Идея сама понятна. Начала с самого простого. Просто вычисляю самую первую m-знаковой подстроку, которая попадется. А потом, насколько понимаю, нужно делать по алгоритму Кнута-Морриса-Пратта.

Моя идея, что, начиная с первого знака строки s, я копирую этот каждый знак в строку subs. если новый знак строки s не содержиться в строке subs, то увеличиваю счетчик на единицу. и так до тех пор, пока счетчик не будет равен m. А потом просто вычисляю длину строки subs.

Походу я что-то там намутила с циклами.. Код компилируется, а ничего не выдается.
Гляньте, пожалуйста.


FUNCTION MaxMChainLen(s: STRING; m: INTEGER):INTEGER;
VAR
i,j, count: INTEGER;
subs : STRING;
BEGIN
count := 0;
subs := '';
WHILE (count <> m) DO BEGIN
FOR i := 1 to Length(s) DO BEGIN
IF ( i = 1) THEN BEGIN
subs := s[i];
count := count+1;
END (* if *)
ELSE BEGIN
FOR j := 1 to Length(subs) DO BEGIN
IF (s[i]<> subs[j]) THEN
count := count+1;
subs:= subs+s[i];
END; (* for *)
END; (* else *)
END; (* for *)
END;(* while *)
END; (* MaxMChainLen *)



Сообщение отредактировано: lopata -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
lopata   поиск в строке   20.03.2010 19:58
Unconnected   Мне кажется, тут можно обойтись без Кнута-Морриса-…   20.03.2010 20:55
lopata   Мне кажется, тут можно обойтись без Кнута-Морриса…   20.03.2010 21:31
Unconnected   Можно так: const mn:set of char=[]; var s:string;…   21.03.2010 1:10
lopata   насколько я понимаю, const mn:set of char=Добавлен…   21.03.2010 1:16
Unconnected   Тогда так: var s:string; i,j,m,ind,mnind,coun…   21.03.2010 1:25
lopata   А можешь, пожалуйста, пояснить как ты это делал. Н…   21.03.2010 1:33
lopata   Неправильно работает   21.03.2010 1:54
Client   пример приведи   21.03.2010 1:55
lopata   Спасибо, конечно, мне не нужно мне было свой код п…   21.03.2010 1:55
Unconnected   Ну, у меня при строке abccccc и m=3 выдаёт ответ…   21.03.2010 2:03
lopata   Ну, у меня при строке abccccc и m=3 выдаёт ответ …   21.03.2010 2:05
lopata   Прости, пожалуйста :give_rose: У тебя все верно)…   21.03.2010 2:23
Unconnected   Должно 9. Неправда. Выдаёт 8, как и должно б…   21.03.2010 2:22
Unconnected   'a' - 4 символа 'c' - 2 символа …   21.03.2010 2:46
lopata   'a' - 4 символа 'c' - 2 символа …   21.03.2010 3:43
Unconnected   А что будет, если видов символов в строке S буде…   21.03.2010 3:54
lopata   А что будет, если видов символов в строке S будет…   21.03.2010 4:01
Unconnected   Бежим по строке, считаем, сколько раз каждый симво…   21.03.2010 4:05
lopata   Бежим по строке, считаем, сколько раз каждый симв…   21.03.2010 4:24
volvo   Что-то меня терзают сомнения, что это правильно, н…   21.03.2010 6:32
Unconnected   Проснулся сегодня и понял, что в моём коде сортиро…   21.03.2010 13:19
lopata   спасибо,volvo, но оно действительно неправильно вы…   21.03.2010 17:35
Unconnected   var s:string; i,j,m,ind,mnind,count:byte; …   21.03.2010 18:56
lopata   Unconnected, cпасибо большое. буду разбираться..   22.03.2010 0:33
lopata   Честно говоря, все равно что-то неверно Потому как…   24.03.2010 3:42
Unconnected   Ответ должен быть 9, aaaaccccc .   24.03.2010 13:34
lopata   я поняла почему 9. прото мне казалось, что символы…   24.03.2010 16:19
volvo   Правильно казалось. Символы должны стоять именно п…   24.03.2010 16:26
lopata   Правильно казалось. Символы должны стоять именно …   24.03.2010 22:22
lopata   Тольконе совсем поняла что ты делал с Max.   24.03.2010 23:14
volvo   Искал наибольшее, что и требовалось... На каждой и…   24.03.2010 23:23
lopata   Всё, поняла. спасибо большое.   24.03.2010 23:41


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

 





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