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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.92
vipusknik
0 / 0 / 0
Регистрация: 22.04.2012
Сообщений: 54
#1

Заменить все вхождения строки s2 в строку s1 на строку s3 - C++

17.10.2012, 20:02. Просмотров 1789. Ответов 23
Метки нет (Все метки)

Дано три строки s1, s2, s3. Заменить в строке s1 все вхождения s2 на s3.

Помогите. Не знаю как сделать.
Вообще мыслей никаких(((
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.10.2012, 20:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Заменить все вхождения строки s2 в строку s1 на строку s3 (C++):

Преобразовать строку: все вхождения abc заменить на def - C++
написать программу Дана строка из 80 символов, известно что в начале строки s находится не более 40 латинских букв, за которыми следуют...

Заменить в строке все вхождения abc на def и напечатать полученную строку - C++
Здравствуйте. В программировании мозги не много соображают, что как работает понять могу, но вот написать самому редко получается. ...

Ввести строку и слово, удалить все вхождения слова и вывести строку - C++
помогите с лабой! Добавлено через 22 секунды через <stdio.h>

Дан символ C и строки S, S0. После каждого вхождения символа C в строку S вставить строку S0 - C++
Дан символ C и строки S, S0. После каждого вхождения символа C в строку S вставить строку S0. Помогите пожалуйста с реализацией на Си

Ввести строку текста и строку поиска, найти местоположение первого вхождения строки поиска в строку текста - C++
Здравствуйте, не могли бы вы помочь новичку в программировании))) Нужно написать програмку, которая считывает с клавиатуры строку текста...

Ввести строку и два слова, заменить все вхождения первого слова на второе - C++
Возможно ли создание такой программы: Ввести строку и два слова, заменить все вхождения первого слова на второе.

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
David Sylva
1286 / 948 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
17.10.2012, 22:39 #16
Цитата Сообщение от vipusknik Посмотреть сообщение
а если без пробелов? сплошная строка
тогда это не строка, а длинное слово.
0
vipusknik
0 / 0 / 0
Регистрация: 22.04.2012
Сообщений: 54
17.10.2012, 22:45  [ТС] #17
ну как мне препод сказал, то должно быть что-то вроде такого:
s1 - tanyanikitany
s2 - an
s3 - qwer

tqweryqwerikitqwery
0
David Sylva
1286 / 948 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
17.10.2012, 22:50 #18
Цитата Сообщение от vipusknik Посмотреть сообщение
Дано три строки s1, s2, s3. Заменить в строке s1 все вхождения s2 на s3.
Нее не твоё задание? Строки и слова умеешь отличать?
0
vipusknik
0 / 0 / 0
Регистрация: 22.04.2012
Сообщений: 54
17.10.2012, 22:54  [ТС] #19
тоесть по словам должно быть,да?
0
David Sylva
17.10.2012, 22:57
  #20

Не по теме:

Всё я умываю руки

0
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
17.10.2012, 23:31 #21
Цитата Сообщение от David Sylva Посмотреть сообщение
go покажи как, до меня никак не доходит.
ну я предложил ответ на вопрос
Цитата Сообщение от vipusknik Посмотреть сообщение
например, s3 < s2.
В идеале может быть и больше. Поэтому так.
Я бы сделал так функцию insert
Проверяйте, может ошибся, время то уже позднее
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
26
27
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
 
char* insert(char *src, char *s, char *dst)
{
   char *t = strdup(src + strlen(s));
   strcpy(src, dst);
   strcat(src, t);
   free(t);
   return src;
}
 
int main(void)
{
   char s[BUFSIZ] = "__Hello world";
   char *s1 = "Hi";
   char *s2 = "Hello";
   char *ptr = strchr(s, 'H');
 
   printf("%s\n", insert(ptr, s2, s1));
   printf("%s\n", insert(ptr, s1, s2));
   printf("%s\n", insert(ptr, s2, s2));
   printf("%s\n", s);
 
   return 0;
}
http://ideone.com/Ck8SO

Добавлено через 37 секунд
Bash
1
2
3
4
Hi world
Hello world
Hello world
__Hello world
1
David Sylva
1286 / 948 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
18.10.2012, 09:08 #22
go отличный вариант, но по моему он не работает если несколько вхождений слова.
0
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
18.10.2012, 10:51 #23
Цитата Сообщение от David Sylva Посмотреть сообщение
но по моему он не работает если несколько вхождений слова.
В смысле?
Вот протестил

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
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
 
char* insert(char *src, char *s, char *dst)
{
   char *t = strdup(src + strlen(s));
   strcpy(src, dst);
   strcat(src, t);
   free(t);
   return src;
}
 
int main(void)
{
   char s[BUFSIZ] = "Hello, world, Hello";
   char *s1 = "Hi";
   char *s2 = "Hello";
 
   printf("%s\n", s);
 
   for (char *ptr = strstr(s, s2); ptr; ptr = strstr(ptr + 1, s2))
      insert(ptr, s2, s1);
 
   printf("%s\n", s);
 
   for (char *ptr = strstr(s, s1); ptr; ptr = strstr(ptr + 1, s1))
      insert(ptr, s1, s2);
 
   printf("%s\n", s);
 
   for (char *ptr = strstr(s, s2); ptr; ptr = strstr(ptr + 1, s2))
      insert(ptr, s2, s2);
 
   printf("%s\n", s);
 
   return 0;
}
http://ideone.com/sqrul
1
David Sylva
1286 / 948 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
18.10.2012, 11:20 #24
Да всё норм работает.

Не по теме:

Жаль автору темы твоя программа не пригодится

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.10.2012, 11:20
Привет! Вот еще темы с ответами:

Заменить все символы "*" числом, совпадающим с порядковым номером вхождения данного символа в строку - C++
В заданной строке мне нужно заменить все &quot;*&quot; числом, которое будет отвечать номеру за порядком вхождения данного символа в строку.

Найти все вхождения в строку последовательности символов "сто" и заменить на "100" - C++
Дана строка символов. Найти все вхождений последовательностей символов &quot;сто&quot; и заменить на &quot;100&quot;

Заменить в строке символ 'q' на номер вхождения в строку в обратном порядке - C++
Вводится производная строка, заменить в ней символ 'q' на номер вхождения в строку в обратном порядке. Вот, мое строительство, не очень -...

Найти строку, содержащую наибольший элемент матрицы и заменить все отрицательные элементы этой строки числом 0 - C++
Здравтсвуйте! помогите пжл решить задачу. Найти строку, содержащую наибольший элемент матрицы и заменить все отрицательные элементы...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
18.10.2012, 11:20
Ответ Создать тему
Опции темы

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