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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 42, средняя оценка - 4.81
Unisol
1 / 1 / 0
Регистрация: 16.06.2010
Сообщений: 16
#1

Удалить из строки S1 первую подстроку, совпадающую с S2 - C++

16.06.2010, 11:30. Просмотров 5441. Ответов 5
Метки нет (Все метки)

Даны две строки: S1 и S2. Удалить из строки S1 первую подстроку, совпадающую с S2. Если такой подстроки нет, то вывести S1 без изменений.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.06.2010, 11:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Удалить из строки S1 первую подстроку, совпадающую с S2 (C++):

Удалить из строки S последнюю подстроку,совпадающую с S0. - C++
Язык программирования-С++! Даны строки S и S0.Удалить из строки S последнюю подстроку,совпадающую с S0. Если совпадающих подстрок нет,то...

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

Строки. Удалить из строки S1 последнюю подстроку, совпадающую с S2 - C++
Помогите решить задачу Даны строки S1 и S2. Удалить из строки S1 последнюю подстроку, совпадающую с S2. Если совпадающих подстрок...

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

Как скопировать подстроку из строки до определенного символа? Или удалить, начиная с этого символа - C++
Добрый вечер. Ответ искал, но не нашёл. Предположим, есть строка: ABC|DEF Надо скопировать всё до | , т.е., в приведённом...

Функция получает строку1 и строку2 и ищет в строке1 первую подстроку, равную строке2 - C++
10. Функция получает строку1 и строку2 и ищет в строке1 первую подстроку, равную строке2. Функция возвращает адрес подстроки , если...

5
kazak
3038 / 2359 / 157
Регистрация: 11.03.2009
Сообщений: 5,405
Завершенные тесты: 1
16.06.2010, 11:43 #2
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>
#include <string.h>
 
int main(int argc, char* argv[])
{
   char s1[256], s2[256];
   char *buf;
   int i,j;
 
   printf("Введите строку 1: ");
   gets(s1);
   printf("Введите строку 2: ");
   gets(s2);
   buf = strstr(s1, s2);
   if (buf)
   {
      for (i = 0; i < strlen(s2); i++)
         for (j = 0; j < strlen(s1); j++)
            buf[j] = buf[j+1];
   }
   printf("%s\n", s1);
   getchar();
   return 0;
}
0
easybudda
Модератор
Эксперт CЭксперт С++
9683 / 5633 / 956
Регистрация: 25.07.2009
Сообщений: 10,811
16.06.2010, 15:52 #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <string>
 
int main(){
    std::string s1, s2;
    std::cout << "s1: ";
    std::getline(std::cin, s1);
    std::cout << "s2: ";
    std::getline(std::cin, s2);
    size_t pos;
    if ( ( pos = s1.find(s2) ) != std::string::npos )
        s1.erase(pos, s2.size());
    std::cout << "s1 without s2: " << s1 << std::endl;
    return 0;
}
0
kniazmc13
Сообщений: n/a
12.01.2012, 00:51 #4
kazak, используя свои функции удаление подстроки не происходит!Почему?)

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
int my_strlen(const char *s)
{
    int res=0;
    while(s[res]!='\0')
        res++;
    return res;
}
 
char *strstr(char *s1, char *s2)
{
    char *res=NULL;
    int i, j, len1=my_strlen(s1),
              len2=my_strlen(s2),
              len=len1-len2;
    if(len<0) return res;
    for(i=0;i<len;i++)
    {   for(j=0;j<len2;j++)
        {
            if(s1[i]!=s2[j])
                break;
            if(j==len2) return s1;
        }
    }
}
kazak
3038 / 2359 / 157
Регистрация: 11.03.2009
Сообщений: 5,405
Завершенные тесты: 1
12.01.2012, 08:17 #5
Потому что в Ваших функциях удаление подстроки незапрограмировано.
0
Ilyawow
24 / 24 / 5
Регистрация: 18.11.2011
Сообщений: 266
12.01.2012, 08:47 #6
C++
1
2
3
4
5
6
7
8
 char str1[123] ,str2[123] ,*p;
...
\\ввод с1 и с2 
...
 
   p = strstr ( str1, str2 ); 
   strcpy ( p, p + strlen(str2) ); 
   ...
Добавлено через 7 минут
Цитата Сообщение от kazak Посмотреть сообщение
C
1
2
3
4
5
6
7
8
   if (buf)
   {
      for (i = 0; i < strlen(s2); i++)
         for (j = 0; j < strlen(s1); j++)
            buf[j] = buf[j+1];
   }
  
}
это все можно заменить strcpy(buf,buf+strlen(s2));
0
12.01.2012, 08:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.01.2012, 08:47
Привет! Вот еще темы с ответами:

Удалить в строке подстроку со словами, не оканчивающимися на -ок - C++
Помогите, пожалуйста, найти ошибку. Написан код, удаляет в строке подстроку со словами, не оканчивающимися на -ок. В итоге программа...

В заданной строке удалить заданную подстроку, сколько бы раз она не встречалась - C++
Ребят, помогите разобраться. Стоит задача создать программу со строками, string.h желательно не использовать. В заданной строке удалить...

Удалить из строки S первую подстроку, совпадающую с S0 - C (СИ)
Даны строки S и S0. Удалить из строки S первую подстроку, совпадающую с S0. Если совпадающих подстрок нет, то вывести строку S без...

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


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

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

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