Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/18: Рейтинг темы: голосов - 18, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 18.04.2014
Сообщений: 28
1

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

21.04.2014, 14:02. Показов 3647. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Заданная строка S. Превратить S следующим образом:
1) Удалить из S первое вхождение буквосочетание 'not' ;
2) После первого буквосочетание 'so' вставить 'on' ;
3) В строку Х скопировать 4 символа из строки S после первой 'j' ;
4) Подсчитать количество буквосочетаний 're' .
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.04.2014, 14:02
Ответы с готовыми решениями:

Даны две строки. Удалить в первой строке первое вхождение второй строки
Посмотрите пж ребят и напишите , правильно ли я написал. int main() { setlocale(LC_ALL,...

Удалить из строки первое вхождение заданной подстроки
Найти ошибки в коде с++ удалить из строки первое вхождение буквосочетание 'while' #include...

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

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

16
Заблокирован
21.04.2014, 14:06 2
ну а в чём вопрос - то ?
0
1 / 1 / 0
Регистрация: 18.04.2014
Сообщений: 28
21.04.2014, 14:13  [ТС] 3
тоисть надо задать строку S, а потом надо делать некоторые операции с ним.
0
Заблокирован
21.04.2014, 14:16 4
Цитата Сообщение от vladik26 Посмотреть сообщение
тоисть надо задать строку S, а потом надо делать некоторые операции с ним
ну раз надо - делай, раз тебе всё понятно.... Нам то зачем о твоих делах знать?
0
1 / 1 / 0
Регистрация: 18.04.2014
Сообщений: 28
21.04.2014, 14:17  [ТС] 5
если бы я знал, как его делать, яб не спрашивал бы
0
Заблокирован
21.04.2014, 14:19 6
Цитата Сообщение от vladik26 Посмотреть сообщение
если бы я знал, как его делать, яб не спрашивал бы
кого его то? Как всё задание не знаешь делать - ну тогда за деньги, если есть какие - то конкретные вопросы - спрашивай
0
1 / 1 / 0
Регистрация: 18.04.2014
Сообщений: 28
21.04.2014, 14:29  [ТС] 7
"кого его то?" - задание ето.
что надо писать что бы "Удалить из S первое вхождение буквосочетание 'not' "
0
Заблокирован
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
109 / 84 / 55
Регистрация: 01.02.2014
Сообщений: 281
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");
    }
}
2
1 / 1 / 0
Регистрация: 18.04.2014
Сообщений: 28
21.04.2014, 15:04  [ТС] 10
спасибо за программу, вот только как бы переделать ее, что бы тип был char ?
а не string
1
109 / 84 / 55
Регистрация: 01.02.2014
Сообщений: 281
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;
    }
}
1
1 / 1 / 0
Регистрация: 18.04.2014
Сообщений: 28
21.04.2014, 19:56  [ТС] 12
после запуска программы пустая консоль.
как вывести результаты?
(когда пишу cout то много ошибок)
0
13 / 13 / 1
Регистрация: 06.06.2011
Сообщений: 157
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
1 / 1 / 0
Регистрация: 18.04.2014
Сообщений: 28
22.04.2014, 00:43  [ТС] 14
мне надо для компилятора турбо 3.0
если напишу using namespace std; то ошибка
0
13 / 13 / 1
Регистрация: 06.06.2011
Сообщений: 157
22.04.2014, 01:15 15
vladik26, эм, а если на выводе попробовать ставить
C++
1
2
#include <iostream>
std::cout<<...<<endl;
0
1 / 1 / 0
Регистрация: 18.04.2014
Сообщений: 28
22.04.2014, 08:31  [ТС] 16
так тоже не идет.
по идеи как-то надо без этого.
0
0 / 0 / 0
Регистрация: 16.02.2018
Сообщений: 18
24.02.2018, 06:17 17
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
56
57
58
59
60
#include "stdafx.h"
#include<iostream>
#include<string>
using namespace std;
int main()
{
    char S[512];
    char X[6];
    char str[6];
    memset(S, 0, 512);
    memset(X, 0, 6);
    memset(str, 0, 6);
    strcpy_s(S, "I met my old friend while I was travelling. I hope to see her while she is there. Free using");
    /*task1_C();*/
    int pos = -1;
    
    
    strcpy_s(str, "while");
    pos = strstr(S, str) - S;
    if (pos > 0) {
        strcpy_s(S + pos, const char 512, S + pos + strlen(str));
        /*errno_t strcpy_s(*(S+pos, rsize_t(S[512] + pos + strlen(str)));*/
    }
 
 
    
    strcpy_s(str, "f");
    pos = strstr(S, str) - S;
    if (pos > 0) {
        char buffer[512];
        memset(buffer, 0, 512);
        strncpy_s(buffer, 0, pos + strlen(str));
        strcat_s(buffer, "or");
        strcat_s(buffer, S + pos + strlen(str));
        strcpy_s(S, buffer);}
 
 
 
    strcpy_s(str, ".");
    pos = strstr(S, str) - S;
    if (pos > 0) {
        strncpy_s(X, S + pos + strlen(str),size_t (6));
    }
 
 
 
    strcpy_s(str, "ing");
    int count = 0;
    char tmp[512];
    memset(tmp, 0, 512);
    strcpy_s(tmp, S);
    pos = strstr(tmp, str) - tmp;
    while (pos > 0) {
        count++;
        strcpy_s(tmp, tmp + pos + strlen(str));
        pos = strstr(tmp, str) - tmp;
    }
    system("pause");
    return 0;
}
0
24.02.2018, 06:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.02.2018, 06:17
Помогаю со студенческими работами здесь

первое вхождение строки
Попытался реализовать первое вхождение строки. Вроде это чудо почти работает, но валится например...

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

Нужно удалить из массива повторяющиеся элементы, оставив только первое вхождение
Нужно удалить из массива повторяющиеся элементы, оставив только первое вхождение. Повторяющимися...

Вывести строку исключив первое вхождение второй строки
Хотел решить задачу, где нужно вывести строку, кроме первого входа 2-й строки. Вышло: #include...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru