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

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

Восстановить пароль Регистрация
 
vladik26
0 / 0 / 0
Регистрация: 18.04.2014
Сообщений: 28
21.04.2014, 14:02     Удалить из строки первое вхождение буквосочетание 'not' #1
Заданная строка S. Превратить S следующим образом:
1) Удалить из S первое вхождение буквосочетание 'not' ;
2) После первого буквосочетание 'so' вставить 'on' ;
3) В строку Х скопировать 4 символа из строки S после первой 'j' ;
4) Подсчитать количество буквосочетаний 're' .
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
newbie666
Заблокирован
21.04.2014, 14:06     Удалить из строки первое вхождение буквосочетание 'not' #2
ну а в чём вопрос - то ?
vladik26
0 / 0 / 0
Регистрация: 18.04.2014
Сообщений: 28
21.04.2014, 14:13  [ТС]     Удалить из строки первое вхождение буквосочетание 'not' #3
тоисть надо задать строку S, а потом надо делать некоторые операции с ним.
newbie666
Заблокирован
21.04.2014, 14:16     Удалить из строки первое вхождение буквосочетание 'not' #4
Цитата Сообщение от vladik26 Посмотреть сообщение
тоисть надо задать строку S, а потом надо делать некоторые операции с ним
ну раз надо - делай, раз тебе всё понятно.... Нам то зачем о твоих делах знать?
vladik26
0 / 0 / 0
Регистрация: 18.04.2014
Сообщений: 28
21.04.2014, 14:17  [ТС]     Удалить из строки первое вхождение буквосочетание 'not' #5
если бы я знал, как его делать, яб не спрашивал бы
newbie666
Заблокирован
21.04.2014, 14:19     Удалить из строки первое вхождение буквосочетание 'not' #6
Цитата Сообщение от vladik26 Посмотреть сообщение
если бы я знал, как его делать, яб не спрашивал бы
кого его то? Как всё задание не знаешь делать - ну тогда за деньги, если есть какие - то конкретные вопросы - спрашивай
vladik26
0 / 0 / 0
Регистрация: 18.04.2014
Сообщений: 28
21.04.2014, 14:29  [ТС]     Удалить из строки первое вхождение буквосочетание 'not' #7
"кого его то?" - задание ето.
что надо писать что бы "Удалить из S первое вхождение буквосочетание 'not' "
newbie666
Заблокирован
21.04.2014, 14:49     Удалить из строки первое вхождение буквосочетание 'not' #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;
}
Меорн
74 / 59 / 29
Регистрация: 01.02.2014
Сообщений: 201
21.04.2014, 14:52     Удалить из строки первое вхождение буквосочетание 'not' #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");
    }
}
vladik26
0 / 0 / 0
Регистрация: 18.04.2014
Сообщений: 28
21.04.2014, 15:04  [ТС]     Удалить из строки первое вхождение буквосочетание 'not' #10
спасибо за программу, вот только как бы переделать ее, что бы тип был char ?
а не string
Меорн
74 / 59 / 29
Регистрация: 01.02.2014
Сообщений: 201
21.04.2014, 19:26     Удалить из строки первое вхождение буквосочетание 'not' #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;
    }
}
vladik26
0 / 0 / 0
Регистрация: 18.04.2014
Сообщений: 28
21.04.2014, 19:56  [ТС]     Удалить из строки первое вхождение буквосочетание 'not' #12
после запуска программы пустая консоль.
как вывести результаты?
(когда пишу cout то много ошибок)
о_О_Кто_здесь
11 / 11 / 1
Регистрация: 06.06.2011
Сообщений: 152
21.04.2014, 22:48     Удалить из строки первое вхождение буквосочетание 'not' #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;
vladik26
0 / 0 / 0
Регистрация: 18.04.2014
Сообщений: 28
22.04.2014, 00:43  [ТС]     Удалить из строки первое вхождение буквосочетание 'not' #14
мне надо для компилятора турбо 3.0
если напишу using namespace std; то ошибка
о_О_Кто_здесь
11 / 11 / 1
Регистрация: 06.06.2011
Сообщений: 152
22.04.2014, 01:15     Удалить из строки первое вхождение буквосочетание 'not' #15
vladik26, эм, а если на выводе попробовать ставить
C++
1
2
#include <iostream>
std::cout<<...<<endl;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2014, 08:31     Удалить из строки первое вхождение буквосочетание 'not'
Еще ссылки по теме:

C++ Первое вхождение символа в строку. С++
C++ Удалить часть символьной строки, заключенной в скобки (вместе со скобками). Нужно через вхождение в строку
Удалить часть символьный строки заключенной в скобки(вместе со скобками) . Нужно через вхождение в строку C++

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

Или воспользуйтесь поиском по форуму:
vladik26
0 / 0 / 0
Регистрация: 18.04.2014
Сообщений: 28
22.04.2014, 08:31  [ТС]     Удалить из строки первое вхождение буквосочетание 'not' #16
так тоже не идет.
по идеи как-то надо без этого.
Yandex
Объявления
22.04.2014, 08:31     Удалить из строки первое вхождение буквосочетание 'not'
Ответ Создать тему
Опции темы

Текущее время: 07:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru