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

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

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

В заданном тексте удалить часть текста заключенную в круглые скобки - C++

17.01.2014, 15:45. Просмотров 1447. Ответов 15
Метки нет (Все метки)

В заданном тексте удалить часть текста заключенную в круглые скобки ( скобки не удалять).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.01.2014, 15:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос В заданном тексте удалить часть текста заключенную в круглые скобки (C++):

Удалить часть текста, заключенную в скобки (вместе со скобками) - C++
Удалить часть текста, заключенную в скобки (вместе со скобками). Считать, что скобки встречаются один раз.

В тексте удалить символы, заключенные в круглые скобки, вместе со скобками - C++
//--------------------------------------------------------------------------- #include <iostream.h> #include <math.h> #include...

Каждую цифру заменить на заключенную в круглые скобки последовательность знаков ‘+’ - C++
Многострочный текст, введенный с клавиатуры, преобразовать следующим образом: каждая цифра заменяется на заключенную в круглые скобки...

Каждую цифру заменить на заключенную в круглые скобки последовательность знаков - C++
Многострочный текст, введенный с клавиатуры, преобразовать следующим образом: каждая цифра заменяется на заключенную в круглые скобки...

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

Разработать алгоритм и программу для удаления в заданном тексте части текста, взятого в скобки (вместе со скобками) - C++
Разработать алгоритм и программу для удаления в заданном тексте части текста, взятого в скобки (вместе со скобками).Помогите плиз для...

15
egor2116
449 / 373 / 42
Регистрация: 20.01.2013
Сообщений: 1,133
17.01.2014, 16:23 #2
Посмотрите тут Удалить часть строки
0
DiffEreD
1434 / 771 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
17.01.2014, 16:23 #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <string>
#include <boost/algorithm/string/regex.hpp>
 
int main()
{
   std::string s = "Some text (some other text) and ( else some text )";
   const boost::regex reg("(?<=\\()(.*?)(?=\\))");
   boost::erase_all_regex(s, reg);
   std::cout << s << "\n";
 
   return 0;
}
0
MicM
823 / 481 / 90
Регистрация: 29.12.2009
Сообщений: 1,101
Завершенные тесты: 1
17.01.2014, 16:38 #4
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
#include <iostream>
#include <cstring>
using std::cout;
using std::cin;
 
int main()
{
    const int maxLength = 128;
    char str[maxLength];
    cout <<"String: ";
    cin.getline (str,maxLength);
    char *c = str,*p = str;
    bool flag = true;
    while (*p)
    {
        if (*p == ')')
            flag = true;
        if (flag)
        {
            *c = *p;
            c++;
        }
        if (*p == '(')
            flag = false;
        p++;
    }
    *c = '\0';
    cout <<str <<'\n';
    return 0;
}
0
zarko97
279 / 39 / 0
Регистрация: 11.10.2015
Сообщений: 405
16.06.2017, 02:05 #5
C++
1
2
3
4
5
6
7
8
9
void delete_brackets(std::string && s)
{
    std::string::iterator first = s.begin(), last;
    while ((first = std::find(first, s.end(), '(')) != s.end() && (last = std::find(first, s.end(), ')')) != s.end()) {
        while (std::count(first, last + 1, '(') != std::count(first, last + 1, ')')) ++last;
        s.erase(first, ++last);
        last = first;
    }
}
Добавлено через 19 минут
Еще вариант:
C++
1
2
3
4
5
6
7
8
9
10
void delete_brackets(std::string && s)
{
    int brackets = 0;
    s.erase(std::remove_if(s.begin(), s.end(), [&brackets](char ch) 
    {
        if (ch == '(')                 ++brackets;
        if (ch == ')' && brackets > 0) --brackets;
        return brackets > 0 || ch == ')';
    }), s.end());
}
0
Captain Maxee
16.06.2017, 04:48
  #6

Не по теме:

zarko97, Вы некрофил?

0
gray_fox
What a waste!
1528 / 1233 / 71
Регистрация: 21.04.2012
Сообщений: 2,592
Завершенные тесты: 3
16.06.2017, 11:13 #7
Цитата Сообщение от zarko97 Посмотреть сообщение
C++
1
2
3
4
5
6
std::remove_if(s.begin(), s.end(), [&brackets](char ch)
{
    if (ch == '(')                 ++brackets;
    if (ch == ')' && brackets > 0) --brackets;
    return brackets > 0 || ch == ')';
})
Не думаю, что стоит полагаться на прямой порядок обхода элементов.
0
zarko97
279 / 39 / 0
Регистрация: 11.10.2015
Сообщений: 405
16.06.2017, 12:00 #8
gray_fox, а чем он плох?

Добавлено через 43 секунды
Captain Maxee, у вас ко мне личная неприязнь?

Добавлено через 9 минут
gray_fox, код я тщательно потестил...и все случаи обрабатываются корректно
0
gray_fox
What a waste!
1528 / 1233 / 71
Регистрация: 21.04.2012
Сообщений: 2,592
Завершенные тесты: 3
16.06.2017, 12:06 #9
Цитата Сообщение от zarko97 Посмотреть сообщение
gray_fox, а чем он плох?
А разве где то указано, что есть определённый порядок вызова предиката? У вас на это логика завязана.

Добавлено через 15 секунд
Цитата Сообщение от zarko97 Посмотреть сообщение
gray_fox, а чем он плох?
А разве где то указано, что есть определённый порядок вызова предиката? У вас на это логика завязана.
0
повар1
134 / 112 / 38
Регистрация: 24.02.2017
Сообщений: 455
Завершенные тесты: 1
16.06.2017, 12:13 #10
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream.h>
 
int main()
{
 char str[]="Given the sentence  (you need to determine)  the longest wo ",*p;
  char world[128];
  
  cout<<str<<"\n";
  strcpy(world,str);
 
  p=strtok(str,"(");
  strcat(str,"()");
  strcat(str,strrev(strtok(strrev(world),")")));
  cout<<str;
 
  system(" pause >0");
 
    return 0;
}
0
zarko97
279 / 39 / 0
Регистрация: 11.10.2015
Сообщений: 405
16.06.2017, 12:16 #11
gray_fox, мб свой вариант сорса приведете? а то я не оч понимаю в чем мой предикат неверен...

Добавлено через 37 секунд
повар1, вложенные скобки не отработает
0
повар1
134 / 112 / 38
Регистрация: 24.02.2017
Сообщений: 455
Завершенные тесты: 1
16.06.2017, 12:22 #12
zarko97, в задании написано: "( скобки не удалять)". И где ты видел в строке вывода что скобок нет на своем месте?
0
gray_fox
What a waste!
1528 / 1233 / 71
Регистрация: 21.04.2012
Сообщений: 2,592
Завершенные тесты: 3
16.06.2017, 12:27 #13
Цитата Сообщение от zarko97 Посмотреть сообщение
я не оч понимаю в чем мой предикат неверен...
Вы полагаетесь на то, что предикат будет вызван в прямом порядке ( p(s[0]), p(s[1]), ..., p(s[n -1]) ). Но нет гарантий, что порядок будет именно таким (по крайней мере я о таких не в курсе). Будет другим, и ваш код работать не будет.
0
gray_fox
What a waste!
1528 / 1233 / 71
Регистрация: 21.04.2012
Сообщений: 2,592
Завершенные тесты: 3
16.06.2017, 12:35 #14
Например вот что пишут в C++ Coding Standards: 101 Rules, Guidelines, and Best Practices:
87. Make predicates pure functions.

[...]

Stateful predicates may seem useful, but they are explicitly
not very useful with the C++ standard library and its algorithms,
and that is intentional. In particular, stateful
predicates can only be useful if:

• The predicate is not copied:
The standard algorithms make no such guarantee, and
in fact assume that predicates are safely copyable.

The predicate is applied in a documented deterministic order:
The standard algo
rithms generally make no guarantee about the order in which the predicate will
be applied to the elements in the range. In the absence of guarantees about the
order in which objects will be visited, operations like "flag the third element"
(see Examples) make little sense, because which element will be visited "third"
is not well-defined.
0
zarko97
279 / 39 / 0
Регистрация: 11.10.2015
Сообщений: 405
16.06.2017, 12:35 #15
gray_fox, ну а как все строку просмотреть? только так...
0
16.06.2017, 12:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.06.2017, 12:35
Привет! Вот еще темы с ответами:

Определить правильной ли последовательности расставлены круглые скобки в тексте - C++
Здравствуйте! Моя задача звучит следующим образом: &quot;Дан текстовый файл, содержащий программу на С++. Проверить эту программу на...

Удалить часть символьной строки, заключенной в скобки - C++
Удалить часть символьной строки, заключенной в скобки (вместе со скоб¬ками). (использовать iostream.h)

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

Удалить часть символьной строки, заключонной в скобки - C++
2) Удалить часть символьной строки, заключонной в скобки (вместе со скобками).


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

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

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