Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Dmitry78
Сообщений: n/a
#1

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

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

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

Заранее спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.05.2008, 17:27     Заменить первые вхождения заданной подстроки S1 на заданную подстроку S2
Посмотрите здесь:

Заменить в строке все вхождения подстроки str1 на подстроку str2 C++
Заменить в строке все вхождения подстроки str1 на подстроку str2 C++
C++ В заданной строке удалить заданную подстроку, сколько бы раз она не встречалась
Заменить в строке S1 первые, последнее и все вхождения строки S2 на S3 C++
Заменить в строке все вхождения одной подстроки на другую C++
C++ Поиск последнего вхождения в строку заданной подстроки
C++ STL. Заменить в строке S все вхождения подстроки S1 на подстроку S2
Найти координаты первого вхождения в заданную строку подстроки, состоящей из двух одинаковых заданных символов C++
C++ Определить, входят ли в заданную строку все символы заданной подстроки
C++ Заменить в строке все вхождения подстроки str1 на подстроку str2
C++ Заменить в строке последнее вхождение данной подстроки на другую подстроку

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kravam
быдлокодер
1690 / 877 / 44
Регистрация: 04.06.2008
Сообщений: 5,395
09.06.2008, 16:57     Заменить первые вхождения заданной подстроки S1 на заданную подстроку S2 #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;
}
Yandex
Объявления
09.06.2008, 16:57     Заменить первые вхождения заданной подстроки S1 на заданную подстроку S2
Ответ Создать тему
Опции темы

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