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

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

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

Удалить из строки первое вхождение буквосочетание 'not' - C++

21.04.2014, 14:02. Просмотров 1259. Ответов 15
Метки нет (Все метки)

Заданная строка S. Превратить S следующим образом:
1) Удалить из S первое вхождение буквосочетание 'not' ;
2) После первого буквосочетание 'so' вставить 'on' ;
3) В строку Х скопировать 4 символа из строки S после первой 'j' ;
4) Подсчитать количество буквосочетаний 're' .
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.04.2014, 14:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Удалить из строки первое вхождение буквосочетание 'not' (C++):

Удалить из строки буквосочетание - C++
удалить из S первое вхождение буквосочетание 'not'

В предложении удалить первое вхождение “w”, если такое есть - C++
Как можно выполнить это задание с помощью строк?? В предложении удалить первое вхождение “w”, если такое есть. Образовавшуюся “дыру”...

первое вхождение строки - C++
Попытался реализовать первое вхождение строки. Вроде это чудо почти работает, но валится например на тесте text = aaaaaf; pattern = aaaf...

Даны три строки: S1, S2, S3. Заменить в строке S1 первое вхождение строки S2 на S3 - C++
Даны три строки: S1, S2, S3. Заменить в строке S1 первое вхождение строки S2 на S3.

Как найти первое вхождение строки и вернуть всю строку(в которой искали) до конца с места вхождения? - C++
Учу С++ по книге Страуструпа, есть такое задание в конце главы : "Напишите функцию char* findx(const char* s, const char* х) , нахо* ...

Удалить из строки каждое вхождение подстроки - C++
Удалить из строки s каждое вхождение подстроки s1. На С++ Дублирование тем запрещено правилами форума (п. 3.4). Не плодите...

15
newbie666
Заблокирован
21.04.2014, 14:06 #2
ну а в чём вопрос - то ?
0
vladik26
0 / 0 / 0
Регистрация: 18.04.2014
Сообщений: 28
21.04.2014, 14:13  [ТС] #3
тоисть надо задать строку S, а потом надо делать некоторые операции с ним.
0
newbie666
Заблокирован
21.04.2014, 14:16 #4
Цитата Сообщение от vladik26 Посмотреть сообщение
тоисть надо задать строку S, а потом надо делать некоторые операции с ним
ну раз надо - делай, раз тебе всё понятно.... Нам то зачем о твоих делах знать?
0
vladik26
0 / 0 / 0
Регистрация: 18.04.2014
Сообщений: 28
21.04.2014, 14:17  [ТС] #5
если бы я знал, как его делать, яб не спрашивал бы
0
newbie666
Заблокирован
21.04.2014, 14:19 #6
Цитата Сообщение от vladik26 Посмотреть сообщение
если бы я знал, как его делать, яб не спрашивал бы
кого его то? Как всё задание не знаешь делать - ну тогда за деньги, если есть какие - то конкретные вопросы - спрашивай
0
vladik26
0 / 0 / 0
Регистрация: 18.04.2014
Сообщений: 28
21.04.2014, 14:29  [ТС] #7
"кого его то?" - задание ето.
что надо писать что бы "Удалить из S первое вхождение буквосочетание 'not' "
0
newbie666
Заблокирован
21.04.2014, 14:49 #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <tchar.h>
#include <string>
#include <algorithm>
 
int _tmain(int argc, _TCHAR* argv[])
{   
    std::string str = "hello pig! i'm not a pig :-)";
    std::string desiredCombination = "not";
    unsigned int pos = str.find(desiredCombination);
    str.erase(pos, desiredCombination.size());
    return 0;
}
Добавлено через 6 минут
точнее проверку ещё надо добавить на присутствие такой комбинации в строке:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <tchar.h>
#include <string>
#include <algorithm>
 
int _tmain(int argc, _TCHAR* argv[])
{   
    std::string str = "hello pig! i'm not a pig :-) but you - fucking not";
    std::string desiredCombination = "not";
    unsigned int pos = str.find(desiredCombination);
    if(pos != str.npos)
        str.erase(pos, desiredCombination.size());
    return 0;
}
1
Меорн
74 / 59 / 29
Регистрация: 01.02.2014
Сообщений: 203
21.04.2014, 14:52 #9
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
39
40
41
42
#include <iostream>
#include <string>
 
int main()
{
    std::string S = "that is not re of the so not  rej1234 not sore on";
    std::string X;
    std::string str;
 
    //Удалить из S первое вхождение буквосочетание 'not'
    str = "not";
    std::size_t pos = S.find(str);
    if(pos != std::string::npos){
        S.replace(pos, str.length(), "");
    }
 
    //После первого буквосочетание 'so' вставить 'on'
    str = "so";
    pos = S.find(str);
    if(pos != std::string::npos){
        S.insert(pos + str.length(), "on");
    }
 
    //В строку Х скопировать 4 символа из строки S после первой 'j'
    str = "j";
    pos = S.find(str);
    if(pos != std::string::npos){
        X = S.substr(pos + str.length(), 4);
    }
 
    //Подсчитать количество буквосочетаний 're'
    str = "re";
    int count = 0;
    std::string tmp = S;
    pos = tmp.find(str);
    while(pos != std::string::npos)
    {
        count++;
        tmp = tmp.substr(pos + str.length(), tmp.length() - pos - str.length());
        pos = tmp.find("re");
    }
}
1
vladik26
0 / 0 / 0
Регистрация: 18.04.2014
Сообщений: 28
21.04.2014, 15:04  [ТС] #10
спасибо за программу, вот только как бы переделать ее, что бы тип был char ?
а не string
0
Меорн
74 / 59 / 29
Регистрация: 01.02.2014
Сообщений: 203
21.04.2014, 19:26 #11
без string:
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <string>
 
int main()
{
    char S[512];
    char X[4];
    char str[4];
    memset(S,0,512);
    memset(X,0,4);
    memset(str,0,4);
 
    strcpy(S, "that is not re of the so not rej1234 not sore on");
 
    int pos = -1;
 
    //Удалить из S первое вхождение буквосочетание 'not'
    strcpy(str, "not");
    pos = strstr(S, str) - S;
    if(pos > 0){
        strcpy(S + pos, S + pos + strlen(str));
    }
 
    //После первого буквосочетание 'so' вставить 'on'
    strcpy(str, "so");
    pos = strstr(S, str) - S;
    if(pos > 0){
        char buffer[512];
        memset(buffer,0, 512);
        strncpy(buffer, S, pos + strlen(str));
        strcat(buffer, "on");
        strcat(buffer, S + pos + strlen(str));
        strcpy(S, buffer);
    }
 
    //В строку Х скопировать 4 символа из строки S после первой 'j'
    strcpy(str, "j");
    pos = strstr(S, str) - S;
    if(pos > 0){
        strncpy(X, S + pos + strlen(str), 4);
    }
 
    //Подсчитать количество буквосочетаний 're'
    strcpy(str, "re");
    int count = 0;
    char tmp[512];
    memset(tmp,0,512);
    strcpy(tmp, S);
    pos = strstr(tmp, str) - tmp;
    while(pos > 0)
    {
        count++;
        strcpy(tmp, tmp + pos + strlen(str));
        pos = strstr(tmp, str) - tmp;
    }
}
0
vladik26
0 / 0 / 0
Регистрация: 18.04.2014
Сообщений: 28
21.04.2014, 19:56  [ТС] #12
после запуска программы пустая консоль.
как вывести результаты?
(когда пишу cout то много ошибок)
0
о_О_Кто_здесь
11 / 11 / 1
Регистрация: 06.06.2011
Сообщений: 152
21.04.2014, 22:48 #13
vladik26,
Возможно вы забыли подключить библиотеку и объявить пространство имен std?
iostream — заголовочный файл с классами, функциями и переменными для организации ввода-вывода в языке программирования C++ http://cpp.com.ru/lippman/c20.html
Пространство имен - http://ci-plus-plus-snachala.ru/?page_id=250
C++
1
2
#include <iostream>
using namespace std;
0
vladik26
0 / 0 / 0
Регистрация: 18.04.2014
Сообщений: 28
22.04.2014, 00:43  [ТС] #14
мне надо для компилятора турбо 3.0
если напишу using namespace std; то ошибка
0
о_О_Кто_здесь
11 / 11 / 1
Регистрация: 06.06.2011
Сообщений: 152
22.04.2014, 01:15 #15
vladik26, эм, а если на выводе попробовать ставить
C++
1
2
#include <iostream>
std::cout<<...<<endl;
0
22.04.2014, 01:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2014, 01:15
Привет! Вот еще темы с ответами:

Удалить часть символьный строки заключенной в скобки(вместе со скобками) . Нужно через вхождение в строку - C++
это не катит #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include&lt;string.h&gt; using namespace std; int main() { cout&lt;&lt;&quot;vvedite...

Удалить часть символьной строки, заключенной в скобки (вместе со скобками). Нужно через вхождение в строку - C++
с++ это не катит #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include&lt;string.h&gt; using namespace std; int main() { ...

В строке удалить введённое буквосочетание - C++
В строке удалить введённое буквосочетание.

Первое вхождение 2-го массива в 1-ый - C++
Приветствую... Помогите с решение: нужно найти первое вхождеине второго массива в первый, т.е. дан массив А: (1 3 5 7 3 5 20 9) и...


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

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

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