Форум программистов, компьютерный форум CyberForum.ru

Правильная скобочная последовательность - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.69
farrodey
0 / 0 / 0
Регистрация: 23.01.2014
Сообщений: 35
11.04.2014, 19:40     Правильная скобочная последовательность #1
Привет, не могу понять как писать стеки и очереди,а лабу надо срочно сдать.
Проверить, является ли данная строка, состоящая только из символов «(», «)», «[» и «]», правильной скобочной последовательностью, если она таковой не является, то сообщить обо всех ошибках. Правильная скобочная последовательность – это такая последовательность скобок, в которой для каждой открывающей скобки имеется соответствующая парная, и все пары скобок правильно вложены друг в друга.

Заранее большое спасибо тем, кто откликнулся
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.04.2014, 19:40     Правильная скобочная последовательность
Посмотрите здесь:

Правильная скобочная последовательность C++
Массив: Вставить в последовательность действительное число b так, чтобы последовательность осталась неубывающей. C++
C++ Правильная инициализация ?
Проверка записи на соответствие условию: правильная скобочная запись из круглых и квадратных скобок C++
C++ Правильная ли программа?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TenGen
Будущее рядом
 Аватар для TenGen
96 / 94 / 20
Регистрация: 06.03.2014
Сообщений: 342
11.04.2014, 19:46     Правильная скобочная последовательность #2
farrodey, я конечно могу ошибаться, но предположу, что вам нужен символьный массив (который будет представлять стек) и каждую открывающую скобку записывать в стек, а при каждой закрывающей удалять из стека 1 скобку (причем следить, что бы закрывающая скобка и записанная в стеке скобка были одинаковыми)
farrodey
0 / 0 / 0
Регистрация: 23.01.2014
Сообщений: 35
11.04.2014, 19:51  [ТС]     Правильная скобочная последовательность #3
TenGen, Спасибо,буду сейчас сидеть мучить её))
kiborgdelto
70 / 72 / 27
Регистрация: 23.03.2011
Сообщений: 141
11.04.2014, 20:14     Правильная скобочная последовательность #4
такой вопрос через стек или очередь обезательно?
если нет то это делается элементарно, используется переменная которая считает количество открытых скобок, и цикл который проходит по каждой скобке, если скобка открывающая то увеличиваем переменную на 1, если закрывающая уменьшаем если переменная стала меньше 0 на любом элементе то значит ошибка в последовательности, закрывающая скобка стоит раньше открывающейся, если по окончанию цикла переменная больше 0 то значит не все открывающие скобки закрыты

насчёт стека, для большей скорости работы в случае пустого стека проверять какая скобка идёт дальше, если закрывающая то значит она ни чего не закрывает и получаем ошибку в последовательности (не будет работать если в последовательности ошибка но в стеке лежит скобка другого вида, для избавления от такой ошибки нужно считать количество скобок каждого вида в стеке и проверять данное условие если скобок данного типа нет в стеке)
TenGen
Будущее рядом
 Аватар для TenGen
96 / 94 / 20
Регистрация: 06.03.2014
Сообщений: 342
11.04.2014, 20:25     Правильная скобочная последовательность #5
kiborgdelto, а там разве не важно помнить последовательность скобок? А то может быть типа ([(]))
kiborgdelto
70 / 72 / 27
Регистрация: 23.03.2011
Сообщений: 141
11.04.2014, 20:37     Правильная скобочная последовательность #6
скобки же различны, естественно что сначало должно быть сравнение вида скобки и если они одного и тогоже вида, пример решения данной задачи без стека я описывал для 1 вида скобок если их 2 то просто будет 2 счётчика

а про стек я описал выше
Yandex
Объявления
11.04.2014, 20:37     Правильная скобочная последовательность
Ответ Создать тему
Опции темы

Текущее время: 01:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru