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

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

Войти
Регистрация
Восстановить пароль
 
guillemots
0 / 0 / 0
Регистрация: 11.04.2013
Сообщений: 21
#1

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

22.05.2013, 18:19. Просмотров 831. Ответов 3
Метки нет (Все метки)

Помогите решить задачу

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

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 <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];
   }
   else
   printf("%s\n", s1);
   getchar();
   return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.05.2013, 18:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Строки. Удалить из строки S1 последнюю подстроку, совпадающую с S2 (C++):

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

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

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

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

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

Удалить строки динамической матрицы, начиная со строки К1 и до строки К2 - C++
Сформировать динамический двумерный массив, заполнить его случайными числами и удалить строки, начиная со строки К1 и до строки К2 вот...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
yoghurt92
374 / 345 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
22.05.2013, 19:42 #2
guillemots,

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 <iostream>
#include <string>
 
int _tmain(int argc, _TCHAR* argv[])
{
    std::string str1, str2;
 
    std::cout << "Enter first string: ";
        getline(std::cin, str1);
 
    std::cout << "Enter second string: ";
        getline(std::cin, str2);
 
    std::string::size_type pos(str1.find(str2));
 
    if(pos == std::string::npos)
        std::cout << "\nFirst string: " << str1;
    else{
        str1.erase(pos, str2.length() + 1);
        std::cout << "\nFirst string: " << str1;
    }
 
    std::cout << "\n\n";
    return 0;
}
0
guillemots
0 / 0 / 0
Регистрация: 11.04.2013
Сообщений: 21
23.05.2013, 11:43  [ТС] #3
Цитата Сообщение от yoghurt92 Посмотреть сообщение
int _tmain(int argc, _TCHAR* argv[])
Выдает ошибку на этой строке

Добавлено через 7 минут
Цитата Сообщение от yoghurt92 Посмотреть сообщение
int _tmain(int argc, _TCHAR* argv[])
заменил ее на int main(), но программа не решает задачу
0
yoghurt92
374 / 345 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
23.05.2013, 16:13 #4
guillemots, моя ошибка, удалял первый

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 <iostream>
#include <string>
 
int _tmain(int argc, _TCHAR* argv[])
{
    std::string str1, str2;
 
    std::cout << "Enter first string: ";
    getline(std::cin, str1);
 
    std::cout << "Enter second string: ";
    getline(std::cin, str2);
 
    std::string::size_type pos(str1.find_last_of(str2));
 
    if(pos == std::string::npos)
        std::cout << "\nFirst string: " << str1;
    else{
        str1.erase(pos - str2.length() + 1, str2.length());
        std::cout << "\nFirst string: " << str1;
    }
 
    std::cout << "\n\n";
    return 0;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.05.2013, 16:13
Привет! Вот еще темы с ответами:

Упорядочить символы строки B в алфавитном порядке и удалить латинские буквы из строки A - C++
&quot;Даны строки A и B. Если в A есть латинские буквы, а в B нет повторяющихся символов, то упорядочить символы B в алфавитном порядке и...

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

Удаления со строки подстроку! - C++
Здраствуйте! Дано подстроку...найти и уничтожить его со всех слов в строке... помогите плиз....

Удалить из строки среднюю букву, если длина строки нечётная или две средних в противном случае - C++
Строки. Дана строка S. Удалите из неё среднюю букву, если длина строки нечётная или две средних в противном случае. Формат входных...


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

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

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