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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.04.2012, 23:31   #1
asmars
Форумчанин
 
Аватар для asmars
 
Регистрация: 28.05.2011
Сообщений: 309
По умолчанию Удаление из строки.

Всем привет!
Вот задание..
"Ввести ряд символов. В этом ряду удалить все символы заключенные в {}. Например: Дан ряд "asdff {eee} rrrr", должно остаться "asdff rrrr". "

Как это сделать..
Вот, что написал, а дальше ума не прилажу как реализовать.


Код:
int main()
{

        int i=0, s, j;
        char line[300];
        char text[300];
        char *ch;

        cout<<"Vvedite ryadok: "<<endl;
        cin.getline(line, 300);

        s=strlen(line);

        for(i=0; i<s; i++){

                if(line[i]=='{'){

                        do{
                                //удалять символы между {}
                        }while(line[i]!='}');

                }

        }


        getch();
        return 0;
}
Спеши медленно.
asmars вне форума Ответить с цитированием
Старый 15.04.2012, 01:51   #2
microbit
Форумчанин
 
Аватар для microbit
 
Регистрация: 26.09.2011
Сообщений: 176
По умолчанию

о так
Код:
char szIn[] =   "asdff {eee} rrrr";
char szOut[50] = {0};
char *pszTmp;

pszTmp = strtok(szIn, "{}");

while(pszTmp != NULL)
{
	strcat(szOut, pszTmp);
	pszTmp = strtok(0, "{}");
}
microbit вне форума Ответить с цитированием
Старый 15.04.2012, 02:29   #3
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

не совсем стабильно но сойдет
Код:
	char s[] = "asdff {eee} rrrr";

	strcpy(strchr(s,'{'),strchr(s,'}')+1);

	puts(s);
onewho вне форума Ответить с цитированием
Старый 15.04.2012, 03:50   #4
Nuklon
Форумчанин
 
Аватар для Nuklon
 
Регистрация: 05.04.2012
Сообщений: 134
По умолчанию

Код:
#include <stdio.h>

char*  sdel(char* s, char ca, char cb) {
   char* t = s;
   char* a, *b, *p;
   for(a = s, b = s; (*b = *a); *a++) {
       if(*a != ca) 
           *b++;
       else {
            for(p = a; *p != cb && *p; *p++);
            a += (p - a);
            continue;
      }
   }
   return t;
}


int main(void) {
   char s[] = "{7}asdff {eee}{} rrrr {9999} war{world}";
   puts( sdel(s, '{', '}') );
   return 0;
}
Nuklon вне форума Ответить с цитированием
Старый 15.04.2012, 13:38   #5
asmars
Форумчанин
 
Аватар для asmars
 
Регистрация: 28.05.2011
Сообщений: 309
По умолчанию

коды описанные выше не работают, кроме как Nuklon'a.
но проблема не решена! я не могу понять алгоритм Nuklon'a.
Спеши медленно.
asmars вне форума Ответить с цитированием
Старый 16.04.2012, 01:05   #6
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

asmars, риали? http://codepad.org/B3dnRXgp
onewho вне форума Ответить с цитированием
Старый 16.04.2012, 01:16   #7
asmars
Форумчанин
 
Аватар для asmars
 
Регистрация: 28.05.2011
Сообщений: 309
По умолчанию

onewho, а если будет две пары скобок "wdwdd {ee} ggg {rrrr} gghv"?
Спеши медленно.
asmars вне форума Ответить с цитированием
Старый 21.04.2012, 20:26   #8
rmv240899
Форумчанин
 
Регистрация: 18.02.2012
Сообщений: 155
По умолчанию

Алгоритм:
1.Создаём новую строку длиной исходной строки и счетчик для неё.
2.В цикле проходим исходную строку.
Если символ не равен символу {, то копируем в ту, вторую строку (не забываем увеличить счётчик для второй строки)
Иначе - переходим на слудующую итерацию.
4.Копируем в исходную строку вторую.

Реализовать попробуйте сами
rmv240899 вне форума Ответить с цитированием
Старый 23.04.2012, 18:21   #9
rmv240899
Форумчанин
 
Регистрация: 18.02.2012
Сообщений: 155
По умолчанию

Хотя нет... В шаге втором нужно в "Иначе" проходить так от { до } :-)
rmv240899 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление строки в C++. Alifee Помощь студентам 1 17.12.2011 02:52
Удаление строки женя2010 Microsoft Office Excel 9 23.04.2010 16:23
Удаление элементов строки s2 из строки s1 Ueshua Общие вопросы C/C++ 4 20.12.2009 13:06
Удаление из строки program123 Помощь студентам 4 21.05.2009 12:52
Удаление строки Minton87 Общие вопросы Delphi 4 07.05.2009 02:32