Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/21: Рейтинг темы: голосов - 21, средняя оценка - 4.81
0 / 0 / 0
Регистрация: 15.01.2020
Сообщений: 7

Удалить из строки S1 вторую подстроку S2. Если такой подстроки S2 не содержится в S1, то вывести S1 без изменений

15.01.2020, 19:48. Показов 4536. Ответов 2

Студворк — интернет-сервис помощи студентам
Удалить из строки S1 вторую подстроку S2. Если такой подстроки S2 не содержится в S1, то вывести S1 без изменений.
Короче, если нет повторений, должно выводить S1, а если два и более повторений, удаляло только второе повторение. К примеру S1=12q12w12, S2=12, должно выводиться 12qw12, если S1=12d12f12g12, S2=12, должно выводиться 12df12g12. Как-то так. У меня есть программа, но она слегка кривая, помогите исправить ее, или она вообще здесь не подходит?
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Program ABC;
var
S1, S2, S3: string;
i, inew, l,k: integer;
begin
k:=0;
writeln('S1');
readln(S1);
S3:=S1;
writeln('S2');
readln(S2);
l := Length(S1);
i := 0;
repeat
inew := Pos(S2, Copy(S1, i + 1, l));
if inew <> 0 then begin
i := i + inew;
k:=k+1;
end;
until inew = 0;
if (i <> 0) then
Delete(S1, i, length(S2));
if k>1 then writeln(s1) else writeln (s3);
end.
Добавлено через 9 минут
На этом сайте уже есть решение этой задачи, но оно не подходит, так что не скидывайте его, пожалуйста. Мне просто надо что-то изменить в моей программе, чтобы все работало как надо)

Добавлено через 12 минут
Так же есть еще одна программа, которая почти похожа на правду, только удаляет первое повторение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
program abc;
Var
s, s0: string;
i: integer;
begin
writeln('Введите строку');
readln(s);
writeln('Введите подстроку');
readln(s0);
i := Pos(s0, s);
if i > 0  then Delete(s, i, length(s0));
writeln('Результат:');
writeln(s)
end.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.01.2020, 19:48
Ответы с готовыми решениями:

Даны строки S и S0. Удалить из строки S первую подстроку, совпадающую с S0. Если совпадений подстрок нет, то вывести S без изменений.
Даны строки S и S0. Удалить из строки S первую подстроку, совпадающую с S0. Если совпадений подстрок нет, то вывести S без изменений.

Даны две строки: S1 и S2. Удалить из строки S1 последнюю подстроку, совпадающую с S2. Если таких подстрок нет, то вывести S1 без изменений
Вот условие: Даны две строки: S1 и S2. Удалить из строки S1 последнюю подстроку, совпадающую с S2. Если таких подстрок нет, то вывести S1...

Удалить из строки S1 подстроку S2, если S2 не содержится в S1, вывести S1 без изменений
Даны строки S1 и S2. Удалить из строки S1 подстроку S2, если S2 не содержится в S1, вывести S1 без изменений.

2
2374 / 776 / 561
Регистрация: 15.01.2019
Сообщений: 2,394
16.01.2020, 02:20
Лучший ответ Сообщение было отмечено Jodi47 как решение

Решение

Вы молодец! Очень толково изъяснили суть своей проблемы.
Держите программку. Программка не шедевр, может кто-то сделает код лучше.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Program ABC;
var
  s1, s2, s3: string;
  i, ipos, firstpos: integer;
begin
  writeln('Введите строку:');
  readln(s1);
  s3:= s1;
  writeln('Введите подстроку:');
  readln(s2);
  i:= 0;
  repeat
    ipos:= Pos(s2, s3);                {нахождение индекса вхождения подстроки в строку }
    Delete(s3, ipos, length(s2));   {удаление найденной подстроки из строки }
    inc(i);                                   { подсчет найденных вхождений подстроки}
    if i = 1 then                           { если программа нашла подстроку первый раз то запомнить индекс}
      firstpos:= ipos;
    if i = 2 then                           { если программа нашла подстроку второй раз, то вставить подстроку, 
                                                   обратно по индексу и выйдет из цикла}
      begin
        insert(s2,s3,firstpos);
        break;
      end;
  until ipos = 0;       {если подстрока не найдена в строке, то цикл прекращается}
  if i <= 1 then        { если количество найденных вхождений подстроки либо 0, либо 1, то выводиться 
                                                  начальная строка}
    writeln(s1)
  else                     { если количество найденных вхождений подстроки больше 1, то выводиться отредактированная строка}
    writeln(s3);
  readln;
end.
1
0 / 0 / 0
Регистрация: 15.01.2020
Сообщений: 7
16.01.2020, 02:28  [ТС]
Просто огромное спасибо, вы помогли мне сдать последнюю лабараторку для зачета)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.01.2020, 02:28
Помогаю со студенческими работами здесь

Удалить из строки S1 все подстроки, совпадающие с S2. Если таких подстрок нет, то вывести S1 без изменений.
Даны две строки: S1 и S2. Удалить из строки S1 все подстроки, совпадающие с S2. Если таких подстрок нет, то вывести S1 без изменений.

Процедура: удалить из строки х1 все подстроки, совпадающие с х2, если таких подстрок нет, то вывести х1 без изменения
с помощью процедуры решить следующую задачу. даны 2 строки х1 и х2. удалить из строки х1 все подстроки, совпадающие с х2, если таких...

Даны строки S и S нулевое.Проверить, содержится ли строка S нулевое в строке S. Если содержится, то вывести TRUE, если не содержится, то FALSE.
Помогите с такой вот программой пожалуйста... Даны строки S и S нулевое.Проверить, содержится ли строка S нулевое в строке S. Если...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
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? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru