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

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

Войти
Регистрация
Восстановить пароль
 
Dawka1305
Сообщений: n/a
#1

Исключить из текста символы, расположенные между всеми парами скобок - C++

31.01.2011, 18:43. Просмотров 861. Ответов 1
Метки нет (Все метки)

Задание:
Дан текст. Исключить из него символы, расположенные между всеми парами скобок (, ). Сами скобки тоже должны быть исключены. Внутри каждой пары скобок могут находиться другие.

помогите разобраться где ошибка. например в случае
(аб(вгд))) программа удалит все, хотя должна только -(аб(вгд)), а последнюю скобку должна оставить

вот код:

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
#include <iostream>
#include <conio.h>
using namespace std;
 
 
void main(void)
{
char text[81],*t;
int i,dlina,temp;
int otkrskobka,zakrskobka;
 
cout<<"vvedite text\n";
gets(text); //ввод текста
t=(char*)malloc(dlina=(strlen(text) )*sizeof(char));
strcpy(t,text);
 
for(zakrskobka=otkrskobka=temp=0 ,i=1;i<dlina;i++)
{
if(t[i]=='(')
otkrskobka=i;
if(t[i]==')') //поиск скобок
zakrskobka=i;
if(zakrskobka-otkrskobka>0 )
{
for(i=otkrskobka;i>=0;i--)
if(t[i]=='(')
otkrskobka=i;
for(i=zakrskobka;i<dlina;i++)
{
if(t[i]=='(')
i=dlina;
if(t[i]==')')
zakrskobka=i;
}
temp=dlina-(zakrskobka-otkrskobka-1);
for(zakrskobka,otkrskobka;zakrskobk a<dlina;zakrskobka++,otkrskobka++)
t[otkrskobka]=t[zakrskobka+1];
otkrskobka=zakrskobka=i=0;
dlina=temp;
}
}
for(i=0;i<dlina-1;i++)
cout<<t[i]; //вывод обработанного текста
cout<<"\n";
system("pause");
free(t);
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.01.2011, 18:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Исключить из текста символы, расположенные между всеми парами скобок (C++):

Нахождения кратчайших путей между всеми парами вершин графа - C++
Подскажите как можно улучшить алгоритм Флойда-Уоршелла что-бы он верно работал если длина некоторых векторов равно 0 (то есть отсутствую). ...

Вычислить количество различных путей между всеми парами вершин графа - C++
Задан граф с N вершинами вычислить количество различных путей между всеми парами вершин графа

Найти минимальные пути между всеми парами вершин, используя алгоритм Флойда. - C++
Найти минимальные пути между всеми парами вершин, используя алгоритм Флойда. А л г о р и т м Ф л о й д а Данные: матрица весов...

Задачка со строками(Требуется вставить символ между всеми парами соседних символов в строке) - C++
Здравствуйте! Есть такая задачка:Файл состоит из записей вида &quot;s пробел c&quot;, где s -строка, а с - символ. Требуется вставить с между всеми...

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

Вывести на экран все символы, расположенные внутри скобок - C++
Прошу помочь решить задачки!:(очень нужно (Билет №22) Дана строка, среди символов которой есть одна открывающаяся и одна...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
igorrr37
1646 / 1274 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
31.01.2011, 21:32 #2
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>
using namespace std;
 
 
int main(){
    string s;
    getline(cin, s);
    for(string::iterator it=s.begin(), ir=it; it!=s.end(); ++it, ++ir){
        if(*it==')'){
            while(*ir!='('&&ir!=--s.begin()){
                  --ir;
            }
            if(ir==s.begin()-1){
                ir=it;
                continue;
            };
            s.erase(ir, it+1);
            ir=it=s.begin()-1;
        }
    }
    cout<<s;
}
 
 
/*
 
i(bn(hjk))m )i(yu)g
i(bn(hj)k))m i(yu)g))
 
*/
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.01.2011, 21:32
Привет! Вот еще темы с ответами:

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

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

Исключить из строки слова, расположенные между скобками ( , ) - C++
Люди, очень нужна помощь! Напишите, пожалуйста, на С++ программу, которая из введенной с клавиатуры строки исключает все слова, заключенные...

Исключить из строки слова, расположенные между скобками ( , ). Сами скобки должны быть исключены. - C++
Помогите с лабой!!! Строки Цель работы: изучение правил описания, ввода-вывода и основных функций обработки символьных данных ...


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

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

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