Строки, подстроки. |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Строки, подстроки. |
Анжелика |
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 35 Пол: Женский Реальное имя: Анжелика Репутация: 0 |
Ребят, у меня есть еще одно задание. Помогите мне понять его: все слова, которые не содержат заданной подстроки, заменить на «[censored]». Это обозначает, что я должна найти слова, потом помотреть есть ли в нем подстрока, причем слово должно быть больше подстроки, а потом если такая подстрока не нашлась в слове, то его надо заменить на «[censored]»? Я правильно поняла. Если нет, то укажите на ошибки.
|
klem4 |
Сообщение
#2
|
Perl. Just code it! Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
1) Разбиваешь строку на слова : Разбиение строки на слова
2) После этого идешь по массиву и проверяешь входит ли в слово заданная подстрока с помощью ф-и pos, как ей пользоваться найдешь тут : FAQ : Строки будут вопросы, задавай -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Анжелика |
Сообщение
#3
|
Новичок Группа: Пользователи Сообщений: 35 Пол: Женский Реальное имя: Анжелика Репутация: 0 |
|
klem4 |
Сообщение
#4
|
Perl. Just code it! Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
Ну тогда не надо заносить слова в массив !;) Доходишь до того момента как выделила слово и заботаешь с ним, все просто ;)
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
volvo |
Сообщение
#5
|
Гость |
Цитата Все бы хорошо, но мне нельзя трогать знаки препинания в строке. Как с этим быть? А там, извини, есть алгоритм разбиения (конкретно - вот этот), который вернет тебе только начало/длинну каждого слова, а строка останется неизменной, и никуда твои знаки препинания не денутся... |
Анжелика |
Сообщение
#6
|
Новичок Группа: Пользователи Сообщений: 35 Пол: Женский Реальное имя: Анжелика Репутация: 0 |
Ребят, скажите, что у меня не так. результат не такой какой нужен. как избавиться от смещения индексов. Вот программа:
Код uses crt; const delimiter = [#32, ',', '.', '!', ':']; type wrd_info = record start, len: byte; end; function get_words(s: string; var words: array of wrd_info): integer; var count: integer; i, curr_len: byte; begin count := -1; i := 1; while i <= length(s) do begin while (s[i] in delimiter) and (i <= length(s)) do inc(i); curr_len := 0; while not (s[i] in delimiter) and (i <= length(s)) do begin inc(i); inc(curr_len); end; if curr_len > 0 then begin inc(count); with words[count] do begin start := i - curr_len; len := curr_len end; end; end; get_words := count + 1; end; const max_word = 255; var words: array[1 .. max_word] of wrd_info; i, n: integer; s,p,h:string; begin clrscr; Write('Vvedite glavnuu stroku'); readln(s); Write('Vvedite podstroku'); readln(h); n := get_words(s, words); for i := 1 to n do if pos(h, copy(s, words[i].start, words[i].len)) = 0 then begin delete(s,words[i].start, words[i].len); insert('[consored]', s,words[i].start); end; writeln(s); end. |
volvo |
Сообщение
#7
|
Гость |
Цитата как избавиться от смещения индексов Стандартная ошибка... Нужно проходить по словам в обратном порядке (от конца предложения к началу), тогда индексы будут меняться, но все последующие слова уже заменены, и ты просто на это не обращаешь внимания...Попробуй: n := get_words(s, words); |
Текстовая версия | 23.12.2024 20:56 |