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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.09.2012, 03:45   #21
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Цитата:
то i++ выполняться не будет, но программа выведет правильный результат.
проверь на более сложных примерах со всякими разными кавычками и скобками вперемешку.
Цитата:
i = i +quote != 0;
но я не пойму ее смысл.
Код:
if( quote ) ++i;
rrrFer вне форума Ответить с цитированием
Старый 03.09.2012, 03:49   #22
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Цитата:
зачем тут два раза повторяется str[ i ]
первая часть условия проверяет что строка не кончилась, вторая - проверяет была ли раньше не закрытая кавычка, третья - не совпадает ли текущий символ с символом открытой кавычки.

Если нашли кавычку - то игнорируем все символы, пока не встретим одноименную кавычку.
rrrFer вне форума Ответить с цитированием
Старый 03.09.2012, 10:24   #23
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Стек, булевый флажок, идем по строчке, когда видим ( запихиваем в стек, когда видим ' смотрим флажок, если флажок не установлен, суем ' в стек и устанавливаем флажок, если флажок уже установлен смотрим что на вершине стека (долнжа быть ') сбрасываем флажок и удаляем из стека. Когда видим ) почти то же самое, только без флажка - просто проверяем что на вершине стека - должно быть ( - удаляем из стека и так на каждый символ в строчке. Если на вершине стека не то, что нам надо, тогда выдаем ошибку и прекращаем работу.
Стек, это правильно, но булева переменная покажет только наличие (отсутствие) скобки, а если ситуация такая - ([]) алгоритм станет в тупик.
В стек нужно запиисывать код конкретной скобки и в последствии проверять на соответствие открывающей и закравающей.
Я бы поступил следующим образом:
Создал-бы список структур с открываающими и закрывающими скобками, примерно так:
Код:
struct Brackets
{
char open;
char closed;
}
А затем-бы делал проверку в цикле. В этом случае не нужно делать большое количество if-ов. Можно обойтись и одним.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 03.09.2012 в 10:39.
Smitt&Wesson вне форума Ответить с цитированием
Старый 03.09.2012, 13:56   #24
Cheat
Пользователь
 
Регистрация: 16.08.2011
Сообщений: 27
По умолчанию

rrrFer, все понятно, разобрался. все работает, спасибо!
Smitt&Wesson, как раз сегодня узнал, что такое структуры . но задачу можно решить без структур и стека, как показал rrrFer.
Cheat вне форума Ответить с цитированием
Старый 03.02.2013, 19:34   #25
Matfey2
Новичок
Джуниор
 
Регистрация: 03.02.2013
Сообщений: 1
По умолчанию

Здравствуйте! Если ввести:
Код:
char str[] = "(')(')";
программа отработает неверно
Matfey2 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверить правильность расстановки круглых и квадратных скобок в выражениях tarasman11 Паскаль, Turbo Pascal, PascalABC.NET 13 06.07.2012 11:50
Программа, которая определяет правильность расстановок скобок (, [, {, ), }, ] sidestep Общие вопросы C/C++ 14 04.04.2012 15:36
Проверить на правильность задачу sam5213 Паскаль, Turbo Pascal, PascalABC.NET 0 23.12.2010 18:28
Нужно проверить на правильность программу Killdgedan Помощь студентам 3 26.05.2009 00:45
Проверить равенство числа открывающих и закрывающих круглых скобок 010 Паскаль, Turbo Pascal, PascalABC.NET 6 18.05.2008 00:27