С Новым годом! Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/55: Рейтинг темы: голосов - 55, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 09.02.2012
Сообщений: 58

Строки. Заменить в строке S все вхождения строки S1 на строку S2

30.04.2012, 22:43. Показов 10386. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
помогите, пожалуйста..
даны строки S, S1 и S2. заменить в строке S все вхождения строки S1 на строку S2.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.04.2012, 22:43
Ответы с готовыми решениями:

Заменить в строке S1 первое (последнее или все) вхождения строки S2 на S3
Задание: даны три строки: S1, S2, S3. Заменить в строке S1 первое (последнее или все) вхождения строки S2 на S3. program L10; Var S1,...

Заменить в строке S1 первое (последнее или все) вхождения строки S2 на S3
Задание: даны три строки: S1, S2, S3. Заменить в строке S1 первое (последнее или все) вхождения строки S2 на S3. Не могу понять почему не...

Для заданной строки s заменить все вхождения строки substr1 на подстроку substr2
Разработать программу, которая для заданной строки s заменяет все вхождения от строки substr1 на подстроку substr2

11
Почетный модератор
 Аватар для КонецСвета
7966 / 3937 / 2464
Регистрация: 30.10.2011
Сообщений: 5,377
30.04.2012, 23:00
Ollik, действительно, извини, в другой =)
моя внимательность сегодня =(
сейчас
1 2 3
выбирай любую, чтобы исправить свою ошибку, прокомментирую =)
0
1 / 1 / 0
Регистрация: 09.02.2012
Сообщений: 58
30.04.2012, 23:03  [ТС]
спасибо=) помоги, тогда, пожалуйста, вот с этой 3 задачей)
0
Почетный модератор
 Аватар для КонецСвета
7966 / 3937 / 2464
Регистрация: 30.10.2011
Сообщений: 5,377
30.04.2012, 23:13
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
uses crt;
var p:integer;                //переменная для позиции вхождения подстроки в строку
    s,s1,s2:string;
begin
   write('S='); readln(s);   //запрашиваем строки и считываем в память
   write('S1='); readln(s1);
   write('S2='); readln(s2);
   while pos(s1,s)>0 do      //в цикле с предусловием до тех пор, пока позиция подстроки в строке больше 0 (то есть подстрока в строке есть)
      begin                  //выполняем следующее
         p:=pos(s1,s);      //переменной присваеваем позицию вхождения подстроки в строку (т.е. первый символ, от которого начинается подстрока в строке)
         delete(s,p,length(s1));   //удаляем из исходной строки с позиции вхождения подстроки столько символов, сколько в подстроке (определяем с помощью функции определения длины строки)
         insert(s2,s,p);     //вставляем  новую подстроку в данную строку с той же позиции
      end;
   writeln('S=',s);          //вывод на экран
end.
1
1 / 1 / 0
Регистрация: 09.02.2012
Сообщений: 58
30.04.2012, 23:31  [ТС]
я набрала эту задачу и у меня получается, что итоговая строка совпадает с первой. это так должно и быть?
0
Почетный модератор
 Аватар для КонецСвета
7966 / 3937 / 2464
Регистрация: 30.10.2011
Сообщений: 5,377
30.04.2012, 23:43
Ollik, нет, не должно! сейчас скрины выложу...
кстати, не набирай, скопируй полностью в блокнот и сохрани с расширением .pas
Миниатюры
Строки. Заменить в строке S все вхождения строки S1 на строку S2  
1
1 / 1 / 0
Регистрация: 09.02.2012
Сообщений: 58
04.05.2012, 21:19  [ТС]
привет. возник по поводу этой задачи еще один вопросик. вот смотри, когда вводишь твое условие, то все хорошо, все получается. а вот если строкам присвоить такие значения как, s=ababababab s1=ab s2=aba, то не выходит.. меняет только один раз. как нужно изменить эту программу, что бы все проверяло и заменяла где нужно?
0
Почетный модератор
 Аватар для КонецСвета
7966 / 3937 / 2464
Регистрация: 30.10.2011
Сообщений: 5,377
04.05.2012, 21:28
привет =) ну, я в таких случаях выкручиваюсь так
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
uses crt;
var p:integer;                //переменная для позиции вхождения подстроки в строку
    s,s1,s2:string;
begin
   write('S='); readln(s);   //запрашиваем строки и считываем в память
   write('S1='); readln(s1);
   write('S2='); readln(s2);
   while pos(s1,s)>0 do      //в цикле с предусловием до тех пор, пока позиция подстроки в строке больше 0 (то есть подстрока в строке есть)
      begin                  //выполняем следующее
         p:=pos(s1,s);      //переменной присваеваем позицию вхождения подстроки в строку (т.е. первый символ, от которого начинается подстрока в строке)
         delete(s,p,length(s1));   //удаляем из исходной строки с позиции вхождения подстроки столько символов, сколько в подстроке (определяем с помощью функции определения длины строки)
         insert(s2,s,p);     //вставляем  новую подстроку в данную строку с той же позиции
      end;
   writeln('S=',s);          //вывод на экран
end.
есть и еще способ, через while, посмотри, если этот не подойдет, разберемся...
1
1 / 1 / 0
Регистрация: 09.02.2012
Сообщений: 58
04.05.2012, 21:48  [ТС]
так это точно такое же решение как и было) мне преподаватель говорил, что можно использовать функцию copy. но я понятия не имею как это сделать.

Добавлено через 7 минут
когда убираешь 8 строчку, то оно меняет ab на aba, только в одном месте, а дальше получается строку не проверяет. а вот когда есть while pos(s1,s)>0 do , программа вообще зацикливается и с таким условием не работает.
0
Почетный модератор
 Аватар для КонецСвета
7966 / 3937 / 2464
Регистрация: 30.10.2011
Сообщений: 5,377
04.05.2012, 21:50
Ollik, извини! другая написана, а эта вставилась... опечатка...
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
uses crt;
var i:integer;                //переменная для позиции вхождения подстроки в строку
    s,s1,s2:string;
begin
   write('S='); readln(s);   //запрашиваем строки и считываем в память
   write('S1='); readln(s1);
   write('S2='); readln(s2);
    for i:=length(s) downto 1 do          //перебираем в цикле с параметром символы строки от последнего до первого
        if copy(s,i,length(s1))=s1 then    //если скопированная часть с текущего символа размером в строку s1 совпадает со строкой s1
           begin
           delete(s,i,length(s1));         //удаляем  из строки кусок, равный по длине s1
           insert(s2,s,i);                 //и в то же место вставляем s2
           end;
   writeln('S=',s);          //вывод на экран
end.
еще раз извини, сегодня моя невнимательность бьет все рекорды...
1
1 / 1 / 0
Регистрация: 09.02.2012
Сообщений: 58
04.05.2012, 22:02  [ТС]
да ничего страшного) все получилось) огромное спасибо)
0
1 / 1 / 0
Регистрация: 09.02.2012
Сообщений: 58
17.05.2012, 23:56  [ТС]
привет=) помоги. пожалуйста. решить задачку...
Дан символ C и строка S. Удвоить каждое вхождение символа C в строку S.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.05.2012, 23:56
Помогаю со студенческими работами здесь

Дано три строки: S1, S2, S3. Заменив в строке S1 все вхождения строки S2 на S3.
Дано три строки: S1, S2, S3. Заменив в строке S1 все вхождения строки S2 на S3. Зарание спасибо Добавлено через 35 минут Помогите...

Даны строки S, S1 и S2. Заменить в строке S первое вхождение строки S1 на строку S2
вот условие: Даны строки S, S1 и S2. Заменить в строке S первое вхождение строки S1 на строку S2.

Даны строки S, S1 и S2. Заменить в строке S первое вхождение строки S1 на строку S2.
Даны строки S, S1 и S2. Заменить в строке S первое вхождение строки S1 на строку S2.

Строки(заменить все вхождения в текст)
Из строки удалить среднюю букву, если длина строки нечетная, если четная - удалить две средние буквы. Заменить все вхождения в текст...

Заменить встроке S все вхождения строки S1 настроку S2
переведите прогу пожалуйста с C++ на Pascal сам текст задачи таков.Даны строки S,S1 и S2. Заменить встроке S все вхождения строки S1 ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru