Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
Dmitry78
0 / 0 / 0
Регистрация: 27.05.2008
Сообщений: 1
1

Заменить первые вхождения заданной подстроки S1 на заданную подстроку S2

30.05.2008, 17:27. Просмотров 1161. Ответов 1
Метки нет (Все метки)

Помогите решить задачку пож.
1. Заменить первые вхождения заданной подстроки S1 на заданную подстроку S2
2. Удалить первые вхождения заданных символов С1, С2, С3, заполняя оброзовавшиеся "дыры" последующими символами
3. Добавить после каждого заданного символа С1 заданный символ С2

Заранее спасибо
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.05.2008, 17:27
Ответы с готовыми решениями:

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

Заменить в строке все вхождения подстроки str1 на подстроку str2
заменить в строке все вхождения подстроки str1 на подстроку str2

Заменить в строке все вхождения подстроки str1 на подстроку str2
заменить в строке все вхождения подстроки str1 на подстроку str2

Заменить в строке все вхождения подстроки str1 на подстроку str2
Заменить в строке все вхождения подстроки strl на подстроку str2.

Найти в исходной строке все вхождения заданной подстроки и заменить их на другую строку
Найти в исходной строке все вхождения (но не более девяти) заданной подстроки и...

1
kravam
быдлокодер
1710 / 897 / 105
Регистрация: 04.06.2008
Сообщений: 5,549
09.06.2008, 16:57 2
Лучший ответ Сообщение было отмечено как решение

Решение

Ну что ж давайте попробуем. Решим для начала первое задание. Прежде всего напишем функцию dd. Её текст и описание ниже. Язык С

//Здесь разработана функция dd. Эта функция вот чем занимается: во-первых, она принимает три аргумента: строку символов, и два числа (n1, n2) типа int. Ничего не возвращает. Эта функция сдвигает часть строки, начинающуюся с символа N n влево или вправо на модуль n1. ЕСли n1> 0, то сдвиг происходит вправо, если меньше, то влево, если ноль- никуда не происходит. Необходимо вручню следить за тем, чтобы всё во всё влезало. Корректно то есть чтобы сдвиги происходили.
C++
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
#include <string.h>
#include <stdio.h>
 
void dd (char s [], int n, int n1) {
 int dl= strlen (s)- 1;
 printf ("%d\n", dl+ n1+ 1); 
 
 //Ну, тут работаем если n1> 0
 if (n1> 0) {
  s [dl+ n1+ 1]= '\0';
  while (dl>= n) {
   s [dl+ n1]= s [dl--];
  }
 }
 
 //А тут, если меньше
 else{
  do {
   s [n+ n1]= s [n++];
  }
  while (n<= dl);
  s [n+ n1]= '\0';
 }
 
}




Теперь собственно решение, отдельной функцией выполнять не стал. Критикуйте, обсудим

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
int main (void) {
 char s [40]= "qwertyyyyyyyyuiopp";
 char s1 []= "yyyyyyyy";
 char s2 []= "xxx";
 char* d;
 int i= 0;
 
 //ЗДесь работаем, если вхождение существует
 if (d= strstr (s, s1)) {
 
  //Сейчас надо расширить или сузить строку s, чтобы в неё входила строка s2
  dd (s, d- s+ strlen (s1),strlen (s2)- strlen (s1));
 
  while (s2 [i]!= '\0') {
   *d= s2 [i++];
   d++;
  }  
 } 
 
 printf ("%s\n", s); 
 
 return 0;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.06.2008, 16:57

В строке заменить заданную подстроку
string s1=&quot;int int int int&quot;; string s2=&quot;int&quot;; string s3=&quot;m&quot;; int...

Найти координаты первого вхождения в заданную строку подстроки, состоящей из двух одинаковых заданных символов
Найти координаты первого вхождения в заданную строку подстроки, состоящей из...

Ввести с экрана строку и подстроку. Найти все вхождения подстроки в строку и удалить их из исходной строки
Ввести с экрана строку и подстроку. Найти все вхождения подстроки в строку и...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru