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

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

Восстановить пароль Регистрация
 
Dawka1305
Сообщений: n/a
31.01.2011, 18:43     Исключить из текста символы, расположенные между всеми парами скобок #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++
Исключить из строки слова, расположенные между скобками ( , ) C++
C++ Вывести на экран все символы, расположенные внутри скобок
C++ Строки. Вывести на экран все символы, расположенные внутри скобок
Нахождения кратчайших путей между всеми парами вершин графа C++
C++ Вычислить количество различных путей между всеми парами вершин графа
В одномерном массиве из целых чисел вставить новый элемент между всеми парами элементов, имеющими разные знаки C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 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))
 
*/
Yandex
Объявления
31.01.2011, 21:32     Исключить из текста символы, расположенные между всеми парами скобок
Ответ Создать тему
Опции темы

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