![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Анжелика |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 35 Пол: Женский Реальное имя: Анжелика Репутация: ![]() ![]() ![]() |
Ребят, у меня есть еще одно задание. Помогите мне понять его: все слова, которые не содержат заданной подстроки, заменить на «[censored]». Это обозначает, что я должна найти слова, потом помотреть есть ли в нем подстрока, причем слово должно быть больше подстроки, а потом если такая подстрока не нашлась в слове, то его надо заменить на «[censored]»? Я правильно поняла. Если нет, то укажите на ошибки.
|
klem4 |
![]()
Сообщение
#2
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
1) Разбиваешь строку на слова : Разбиение строки на слова
2) После этого идешь по массиву и проверяешь входит ли в слово заданная подстрока с помощью ф-и pos, как ей пользоваться найдешь тут : FAQ : Строки будут вопросы, задавай -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Анжелика |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 35 Пол: Женский Реальное имя: Анжелика Репутация: ![]() ![]() ![]() |
|
klem4 |
![]()
Сообщение
#4
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Ну тогда не надо заносить слова в массив !;) Доходишь до того момента как выделила слово и заботаешь с ним, все просто ;)
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
volvo |
![]()
Сообщение
#5
|
Гость ![]() |
Цитата Все бы хорошо, но мне нельзя трогать знаки препинания в строке. Как с этим быть? А там, извини, есть алгоритм разбиения (конкретно - вот этот), который вернет тебе только начало/длинну каждого слова, а строка останется неизменной, и никуда твои знаки препинания не денутся... |
Анжелика |
![]()
Сообщение
#6
|
Новичок ![]() Группа: Пользователи Сообщений: 35 Пол: Женский Реальное имя: Анжелика Репутация: ![]() ![]() ![]() |
Ребят, скажите, что у меня не так. результат не такой какой нужен. как избавиться от смещения индексов. Вот программа:
Код 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); |
![]() ![]() |
![]() |
Текстовая версия | 21.06.2025 4:55 |