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

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

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

Среди элементов строки убрать те которые находятся внутри скобок - C++

02.12.2012, 19:27. Просмотров 516. Ответов 10
Метки нет (Все метки)

Среди эллементов строки убрать те которые находятся внутри скобок . Н емогу понять как решить .
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.12.2012, 19:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Среди элементов строки убрать те которые находятся внутри скобок (C++):

Строки. Вывести на экран все символы, расположенные внутри скобок - C++
Дана строка символов, среди которых есть одна открывающаяся и одна закрывающаяся скобка. Вывести на экран все символы, расположенные внутри...

Дано целочисленный одномерный массив А, состоящий из 14 элементов. Обчилслиты и напечатать сумму четных элементов, которые находятся на нечетных места - C++
Помогите пожалуйста с задачкой Даны целочисленный одномерный массив А, состоящий из 14 элементов. Вычислить и напечатать сумму четных...

В массиве из 15 элементов, вывести те элементы , которые находятся перед максимальным - C++
В массиве из 15 элементов, вывести те элементы , которые находятся перед максимальным.

Найти сумму элементов масива, которые находятся до максимального элемента - C++
Дан масив на 45 элэментов. Написать программу, которая находит сумму элементов масива, которые находятся до максимального элемента.

Вычислить и напечатать произведение первых 7 элементов и сумм следующих элементов, которые находятся на первых позициях - C++
Дано одномерный массив Т, состоящий из 18 символов. Вычислить и напечатать произведение первых 7 элементов и сумм следующих элементов,...

Найти сумму положительных элементов матрицы, которые находятся выше главной диагонали - C++
Задан динамический двумерный массив размерности n х n, нужно найти сумму положительных элементов, которые находятся выше главной диагонали ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MaRKerNSK
24 / 11 / 1
Регистрация: 26.11.2012
Сообщений: 110
Записей в блоге: 2
02.12.2012, 19:35 #2
Ну агоритм такой что выполнять цикл с переборкой символов. и если встретилась скобка , начать даление символов, или замещение их, пок ане встретиться скобка спереди
C++
1
2
3
4
5
6
7
8
9
10
11
12
//псевдо код
bool strDel=false;
for (int i=0; i<размер строки ; i++)
{
if (встретился "(" || встретиться ")")
    strDel = !strDel;
if (strDel)
  {
      Удалить символ
  }
 
}
AlexProg
1 / 1 / 0
Регистрация: 03.11.2012
Сообщений: 52
02.12.2012, 20:43  [ТС] #3
Вот у меня есть примерный код данной программы подкаректируйте пожалуйста
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
#include <iostream>
#include <string.h>
#include<conio.h>
 
//using namespace std;
 
int  main()
{int i;
char *s
    s=getStr;
int CNT=0;
bool flag=false;
while(s[cnt])
{
    cnt=0;
    flag=false;
    if(s[cnt]=='(')
        {
            putchar[s[cnt++]];
            flag=true;
    }
    if else (s[cnt]==')')
        {
            putchar[s[cnt]++];
            flag=false;
    }
    else if (!flag)
    {
        putchar[s[cnt]];
    else 
        cnt++;
    }
}
std::cout<<cnt<<std::endl;
getchar();
    getchar();
    return 0;
}
MaRKerNSK
24 / 11 / 1
Регистрация: 26.11.2012
Сообщений: 110
Записей в блоге: 2
02.12.2012, 20:46 #4
Что то у вас нагромождение)) =)
Buckstabue
175 / 124 / 6
Регистрация: 12.01.2012
Сообщений: 624
02.12.2012, 20:55 #5
вы по ходу дела забыли, что скобки могут быть вложенными. Я бы решил так, но могу ошибаться
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
 
int main()
{
   int bracketsLevel = 0;
   const char *str = "ab(sds(dsds)s)";
 
   for (int i = 0; str[i] != '\0'; ++i)
   {
      if (str[i] == ')')
         --bracketsLevel;
 
      if (bracketsLevel == 0)
      {
         std::cout << str[i];
      }
      if (str[i] == '(')
         ++bracketsLevel;
   }
 
   return 0;
}
MaRKerNSK
24 / 11 / 1
Регистрация: 26.11.2012
Сообщений: 110
Записей в блоге: 2
02.12.2012, 20:57 #6
Buckstabue, Да точно вложенные скобки)) =) тогда можно крутить удалить всё из первых скобок оставить всё во вторых))и тд ))
Пaтрик
415 / 390 / 38
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
02.12.2012, 21:02 #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <regex>
#include <string>
#include <iterator>
 
int main()
{
    std::string str = "ab(sds(dsds)s)";
    std::regex regex("[(].*[)]");
    std::string result;
    std::regex_replace(
        std::back_inserter(result),
        str.begin(),
        str.end(),
        regex,
        "");
    std::cout << result << std::endl;
}
Buckstabue
175 / 124 / 6
Регистрация: 12.01.2012
Сообщений: 624
02.12.2012, 21:06 #8
И все-таки мой алгоритм не оптимален. Ведь может быть такая штука:
"asdsadsa(dfdfd" здесь "dfdfd" находится не внутри скобок, однако я ее удаляю. кромет того программа может ломаться при такой штуке ")))a((s)"
AlexProg
1 / 1 / 0
Регистрация: 03.11.2012
Сообщений: 52
02.12.2012, 21:07  [ТС] #9
благодарю всех сейчас проверю
MaRKerNSK
24 / 11 / 1
Регистрация: 26.11.2012
Сообщений: 110
Записей в блоге: 2
02.12.2012, 21:12 #10
Buckstabue, Я сомневаюсь что человеку из первого поста нужно какоето сложное и гибкое решение))
Buckstabue
175 / 124 / 6
Регистрация: 12.01.2012
Сообщений: 624
02.12.2012, 21:16 #11
еще вопрос как проинтерпретировать запись вида a(b(c)
Что здесь в скобках? Только "c" или "b(с"? Т.е. жадные эти скобки или нет?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.12.2012, 21:16
Привет! Вот еще темы с ответами:

Найти сумму и число элементов матрицы, которые находятся над главной диагональю и на ней - C++
Задача: Дана квадратная действительная матрица. Найти сумму и число элементов матрицы, которые находятся над главной диагональю и на...

Динамические двумерные массивы. Определить суму положительных элементов, которые находятся выше главной диагонали... - C++
Ввести матрицу размером NxM. Память для массива выделить динамически.Определить суму положительных элементов, которые находятся выше ...

Задача с массивом, нужно найти сумму элементов которые находятся перед последним отрицательным элементом - C++
Получить b1,…,bn, где bi - сумма элементов , которые находятся перед последним отрицательным элементом ( если все строки неотрицательные ,...

Найти в массиве вещественных чисел количество элементов, которые меньше среднего среди элементов - C++
Для заданного массива вещественных чисел найти количество элементов, каждый из которых меньше значением среднего среди элементов;


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

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

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