Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C (СИ) Строка из файла http://www.cyberforum.ru/c-beginners/thread700907.html
Нужно прочитать строку из текстового файла, отделить текст от числа и записать в переменные. Строка имеет следующий вид: текст1 = число // текст2 Записать текст1 и текст2 в разные переменные типа...
C (СИ) Для одномерного массива A вычислить наибольшее значение модуля разности между соседними элементами помогите написать код программы http://www.cyberforum.ru/c-beginners/thread700897.html
Вывод графика функции на весь экран C (СИ)
Нужна небольшая помощь. Помогите написать программу на языке Си,которая выведет на весь экран график функции y=1/x^2+x+1. Я в этом новичок,поэтому очень надеюсь на вашу помощь.
C (СИ) Массивы. Почему работает такая конструкция?
Почему это работает и где можно об этом прочитать? По объявлению массив статический, фактически - динамический???? Где под такой массив выделяется память? printf("Kvadratnaya matritsa vida...
C (СИ) Как написать функцию подсчитывающий цифр в тексте http://www.cyberforum.ru/c-beginners/thread700443.html
Как написать функцию подсчитывающий цифр в тексте на языке Си?
C (СИ) Пользователь вводит отдельно строку и символ, необходимо показать на экран номер только последнего Пользователь вводит отдельно строку и символ, необходимо показать на экран номер только последнего совпадения (нумерация с единицы). подробнее
Nameless One
Эксперт С++
5790 / 3439 / 356
Регистрация: 08.02.2010
Сообщений: 7,448
19.11.2012, 17:43 0

Проверить правильность скобочной структуры, составленной из нескольких типов скобок

19.11.2012, 17:43. Просмотров 2073. Ответов 5
Метки (Все метки)

Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от newsrc Посмотреть сообщение
Но и мой и ваш, Nameless One, способы не подойдут в данном случае.
Цитата Сообщение от emacs Посмотреть сообщение
({()[)}] — неправильная
в этой последовательности все скобки парные и условие
Цитата Сообщение от Nameless One Посмотреть сообщение
Если тип закрывающей скобки отличается от типа открывающей скобки, лежащей на вершине стека, то скобки расставлены неправильно.
вылетит на второй закрывающей круглой скобке.
Мой способ прекрасно подойдет, а вот этот уже нет:

Цитата Сообщение от newsrc Посмотреть сообщение
Реализовал тогда это на переменных: встречаем открывающую скобку делаем ++, встречаем закрывающую, делаем --. Разные переменные для разных скобок. В конце переменные должны быть равны нулю.
Почему? Потому, что стек, в отличие от переменных для каждого типа скобок, позволяет не только отслеживать соотношение открывающих/закрывающих скобок одного типа, но также и порядок появления скобок разных типов.

Объясню на этих же примерах (запись вида <a, b, c> будет обозначать стек с элементами a, b и c, причем вершина стека будет располагаться слева, т.е. на вершине стека находится элемент a):
  1. Пример с правильной расстановкой скобок: ({()[]}). Ход работы алгоритма:
    • Символ '(' (открывающая скобка). Кладем в стек: <(>
    • Символ '{'. Кладем в стек: <{, (>
    • Символ '('. Кладем в стек: <(, {, (>
    • Символ ')' (закрывающая скобка). Проверяем скобку на вершине стека. Типы скобок совпадают (круглые скобки), выталкиваем один элемент из стека: <{, (>
    • Символ '['. Кладем в стек: <[, {, (>
    • Символ ']'. Проверяем скобку на вершине стека. Типы скобок совпадают, (квадратные скобки), выталкиваем один элемент из стека: <{, (>
    • Символ '}'. Бла-бла-бла, выталкиваем один элемент из стека: <(>
    • Символ ')'. Бла-бла-бла, выталкиваем элемент из стека: <>
    • Символы кончились, проверяем, пуст ли стек? Стек пуст, а это значит, что конструкция правильная
  2. Пример с неправильной расстановкой скобок: ({()[)}]. Перейдем сразу же к состоянию, когда встретилась первая закрывающая скобка (стек: <(, {, (>):
    • Символ ')', Бла-бла-бла, выталкиваем один элемент из стека: <{, (>
    • Символ '[', кладем в стек: <[, {, (>
    • Символ ')', круглая закрывающая скобка. А на вершине стека у нас квадратная открывающая скобка '['. Типы не совпадают, приходим к правилу:
      Цитата Сообщение от Nameless One Посмотреть сообщение
      Если тип закрывающей скобки отличается от типа открывающей скобки, лежащей на вершине стека, то скобки расставлены неправильно.
      Т.е., корректно распознаем неправильную скобочную конструкцию.

И ничего не ломается.

Вернуться к обсуждению:
Проверить правильность скобочной структуры, составленной из нескольких типов скобок
4
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.11.2012, 17:43

Проверить правильность расстановки круглых и квадратных скобок в выражениях
дана строка символов проверить правильность расстановки круглых и квадратных скобок в выражениях

Дано скобочное выражение, проверить правильность расстановки скобок
дано скобочное выражение заканчивающееся точкой с запятой проверить правильность расстановки скобок...

Динамические структуры: проверить баланс круглых скобок в тексте
Доброе время суток.Помогите пожалуйста с след. заданием. Условие: Дан текст.Проверить баланс...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru