Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 3 705

/ вопрос открыт /

Приветствую, уважаемые эксперты! Найти слово (репка) в ряде и заменить его на слово (колобок). Вивести номер начальной позиции виполненой замены. если такая замена невозможна, то вивести про это информацию.

Дементьев Евгений Владимирович Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Дементьев Евгений Владимирович (статус: Посетитель)
Вопрос отправлен: 27 января 2010, 22:46
Состояние вопроса: открыт, ответов: 1.

Ответ #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™

min@y™ (статус: Доктор наук), 28 января 2010, 08:24 [#2]:

Для поиска в строке есть функции Pos() и PosEx(), для замены - StringReplace().
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Егор

Егор (статус: 10-ый класс), 20 февраля 2010, 19:17 [#3]:

Дементьев Евгений Владимирович:
что же вы жикльору оценочку-то не поставили? а?
несправедливо-то как! ай-ай-ай!
он же вам отвечать в будущем перестанет!
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:55
Выполнено за 0.03 сек.