Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.03.2013, 21:38   #1
dgulij
Пользователь
 
Регистрация: 02.03.2013
Сообщений: 14
По умолчанию Работа со строковыми функциями (Borland C++)

Удалить группу символов, расположенных между круглыми скобками включая сами скобки.
dgulij вне форума Ответить с цитированием
Старый 02.03.2013, 21:54   #2
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

Т.е. удалять все символы в строке от открывающейся до закрывающейся скобки?
Выводите все символы введенной Вами строки до "(" и после ")", организуете цикл прохода по строке...
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!

Последний раз редактировалось Bugrimov; 02.03.2013 в 21:58.
Bugrimov вне форума Ответить с цитированием
Старый 02.03.2013, 23:34   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А если скобки вложены? А если они не одни в тексте?
Что тогда делать?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.03.2013, 00:14   #4
dgulij
Пользователь
 
Регистрация: 02.03.2013
Сообщений: 14
По умолчанию

я нашла подобный алгоритм программы ,про то что ,если скобки не одни в тексте или они вложены вдруг в друга но тогда программа становиться более усложненой ,а по условию задачи ни чего такого же не требуется...
dgulij вне форума Ответить с цитированием
Старый 03.03.2013, 09:24   #5
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

Согласен с Stilet. Нужно предусмотреть варианты если скобка одна или они вообще отсутствуют.
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 03.03.2013, 17:09   #6
dgulij
Пользователь
 
Регистрация: 02.03.2013
Сообщений: 14
По умолчанию

посмотрите пожалуйста мою программку она работает! но она удаляет только то что находится в самих скобках а сами скобки она не удаляет((((помогите разобраться((((пожалуйста
//задание:дан текст исключить из него символы,расположенные между всеми парами скобок ( ). сами скобки тоже должны быть исключены.внутри каждой пары скобок могут быть друние скобки.
//код:
Код:
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <string.h>

using namespace std;

void deletetext(char * text,int i,int j){  //указатель на массив символов
	int strle=strlen(text);//strlen(text)может замедлить работу
	while(j>(i+1)){
		for (int k=j-1;k<strle;k++)//
			text[k]=text[k+1];//k-тый символ равен следующему
		//cout<<text<<endl;//выводим, нужно убрать
		j--;//так как переместили налево
		strle--;//так как перемещаем \0
	}
}

int main()
{
char text [80];
cout << "Vvedite tekst i nazhmite enter:\n";
cin.getline(text,sizeof(text),'\n');
int skob=0;//количество скобок, если оно равно 1 - значит эти скобки парные с обоих концов
int strle=strlen(text); //длина строки, чтобы не замедлять работу
for(int i=0;i<strle;i++){
	skob=0;//каждую итерацию, пока не будут найдена открывающая скобка
	if (text[i]=='(')//если находим
	{
		skob++;//первая пара скобки
		for (int j=i+1;j<strle;j++){
			if (text[j]=='(')//если вторая пара - увеличиваем количество скобок
				skob++;
			if ((text[j]==')')&&(skob==1))//если это (_____), то удаляем _____ оттуда
			{
				deletetext(text,i,j);
				strle=strlen(text);//пересчитываем длину текста
				break;//прерываем цикл для j
			};
			if ((text[j]==')')&&(skob>1))//если символ ), и скобки больше 1 (не крайняя)
				skob--;//уменьшаем на 1
		};
	};
};

cout<<text<<endl;


return 0;
}

Последний раз редактировалось Stilet; 03.03.2013 в 19:17.
dgulij вне форума Ответить с цитированием
Старый 03.03.2013, 18:19   #7
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

dgulij

Покажи преподу вот этот код, и он больше никогда не захочет тебя видеть o_O (((Ж
а у тебя будет зачёт автоматом

Код:
#include <iostream>
#include <locale>

#include <boost/xpressive/xpressive.hpp>
using namespace boost::xpressive;

std::string remove_brackets(const std::string& s)
{
	sregex rx;
	rx = imbue(std::locale())('(' >> *( keep( +~(set='(', ')') ) | by_ref(rx) ) >> ')');
	return regex_replace(s, rx, "");
}

int main()
{
	std::locale::global(std::locale(""));

	std::string s("Удалить ((гр()уп()пу)) си((м)в)олов (,) ра(с(п(ол))оже)нн()(ы)()х между кр(((у)))глыми (с(к)об(к)а((м))и)()()( )в()кл()юч()ая (с(а()м)и) (ск(о)бки)");
	std::cout << remove_brackets(s) << std::endl;

	return 0;
}
проверка работы: http://liveworkspace.org/code/1OkMH4$0
Rififi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа с функциями. C++ Borland. Даниял Помощь студентам 3 11.12.2011 22:25
Работа со строковыми Icekream Паскаль, Turbo Pascal, PascalABC.NET 0 13.11.2011 16:02
работа со строковыми переменными ivanenkovaolga Общие вопросы Delphi 3 16.06.2011 01:26
работа со строковыми процедурами и функциями pooharilo Паскаль, Turbo Pascal, PascalABC.NET 3 26.12.2008 23:51
Помогите решить программу со строковыми процедурами и их функциями Тищук Евгений Паскаль, Turbo Pascal, PascalABC.NET 1 08.11.2008 22:59