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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.12.2012, 21:36   #1
hartman
Пользователь
 
Регистрация: 06.11.2011
Сообщений: 29
По умолчанию

Дана строка S. Из строки требуется удалить текст, заключенный в фигурные скобки. В строке может быть несколько фрагментов, заключѐнных в фигурные скобки. Возможно использование вложенных фигурных скобок и, следовательно необходимо, чтобы программа это учитывала.
Код:
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string s;
            char[] ch = new char[100];
            int k = 0, strt = 0, fstrt = 0;
            Console.WriteLine("Введите строку:");
            s = Console.ReadLine();
            for (int i = 0; i < s.Length; i++)
            {
                if (s[i] == '{')
                    strt = i;
                if (s[i] == '}')
                    fstrt = i;
            }
            for (int i = 0; i < strt; i++)
            {
                ch[k] = s[i];
                k++;
            }
            for (int i = fstrt + 1; i < s.Length; i++)
            {
                ch[k] = s[i];
                k++;
            }
            Console.WriteLine("Преобразованная строка");
            Console.WriteLine(ch);
            Console.ReadKey();
        }
    }
}
не могу удалить вложенные скобки

Последний раз редактировалось Stilet; 26.12.2012 в 22:03.
hartman вне форума Ответить с цитированием
Старый 26.12.2012, 22:56   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

если можно использовать регулярные выражения - то я бы на вашем мести использовал именно их.
Если же нет, то тогда я такой алгоритм предложил - находим первую открывающую скобку, запоминаем индекс, счётчик =1, дальше идём по строки и считаем фигурные скобки - открывающая +1 к счётчику, закрывающая -1 к счётчику и проверяем - если счётчик стал равным нулю - удаляем всё от запомненного индекса до текущей позиции.
Тут же минимальный контроль корректности строки.
Если дошли до конца строки, а счётчик открывающих/закрывающих скобок не стал равным нулю - выдавать ошибку: "для скобки в позиции (запомненный индекс) не найдена закрывающая скобка."

Всё вышесказанное повторять в цикле, пока в строке есть хоть одна открывающая фигурная скобка.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
обработка строк C++ krolex Помощь студентам 0 23.05.2010 14:39
обработка строк Razyiller Компоненты Delphi 8 17.04.2010 00:01
Обработка строк(Си) Bl@st Помощь студентам 2 30.12.2009 23:14