|
Вопрос # 3 705/ вопрос открыт / |
|
Приветствую, уважаемые эксперты! Найти слово (репка) в ряде и заменить его на слово (колобок). Вивести номер начальной позиции виполненой замены. если такая замена невозможна, то вивести про это информацию.
Ответ #1. Отвечает эксперт: Жикльор
Здравствуйте, Дементьев Евгений Владимирович!
Для нахождения слова "репка", нужно узнать ее позицию в тексте (я приведу алгоритм задачи для string, а вы уже доделаете сами)
Находим слово "repka":
position:=pos('repka',inputstring);
На переменной posititon записано число integer, которое говорит нам, на какой позиции размещено это слово, а inputstring - мы вводим через readln. Если position = 0, значит слова "repka" в inputstring нет.
Я не буду использовать StringReplace, так как препод заподозрит. Поэтому чтобы удалить слово "repka" и записать туда слово "kolobok", мы должны удалить старое слово.
Удаляем слово "repka":
Delete(inputstring,position,5);
Почему последний параметр 5? Последний параметр процедуры Delete - это, проще говоря, сколько символов нужно удалить начиная с позиции position в слове inputstring. А в слове "repka" 5 букв, поэтому последний параметр = 5.
Ну а теперь чтобы вставить на это место слово "kolobok", то нужно использовать процедуру Insert.
Вставляем слово "kolobok":
Insert('kolobok',inputstring,position);
Здесь 1 параметр - это подстрока (слово, которое мы вставляем), 2 - строка в которую вставляем, 3 - позиция начала вставки слова.
Потом нужно лишь вывести inputstring через writeln и все готово.
Ну а за позицию произведенной замены, то это переменная position, ее вы тоже выведите, и будет вам позиция произведенной замены.
 |
Ответ отправил: Жикльор (статус: 5-ый класс)
Время отправки: 28 января 2010, 10:40
|
Мини-форум вопроса
Всего сообщений: 3; последнее сообщение — 20 февраля 2010, 19:17; участников в обсуждении: 3.
|
Мережников Андрей (статус: Абитуриент), 28 января 2010, 05:36 [#1]:
что подразумевается под рядом? Как быть если искомое слово встречается несколько раз?
|
|
min@y™ (статус: Доктор наук), 28 января 2010, 08:24 [#2]:
Для поиска в строке есть функции Pos() и PosEx(), для замены - StringReplace().
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Егор (статус: 10-ый класс), 20 февраля 2010, 19:17 [#3]:
Дементьев Евгений Владимирович:
что же вы жикльору оценочку-то не поставили? а?
несправедливо-то как! ай-ай-ай!
он же вам отвечать в будущем перестанет!
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|