Помощь - Поиск - Пользователи - Календарь
Полная версия: Двунаправленный кольцевой список
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
KolyanSergeevich
Пусть есть строка символов, в которой могут встречаться парные символы: “ ”, ' ', { }, ( ), [ ], < >. В этих парах первый символ назовем открывающим, а второй – закрывающим.
Произвести синтаксическую проверку предложения на наличие факта несоответствия открывающего и закрывающего символов (каждому «открывающему» символу должен соответствовать соответствующий «закрывающий» символ).
При решении задачи необходимо:
1. Организовать двунаправленный кольцевой список, каждый элемент которого содержит один из «открывающих» символов и стек, содержащий позиции этого «открывающего» символа в предложении.
Элементы списка добавляются по мере нахождения в предложении.
2. Если в предложении находится «закрывающий» символ, которому не соответствует ни один из «открывающих», то он игнорируется.
3. При нахождении соответствующего «закрывающего» символа осуществляется проверка на соответствие последнему «открывающему» символу. Если проверка удачна, то осуществляется удаление соответствующего элемента из стека. Иначе выдается сообщение об ошибке, содержащее последний «открывающий» символ и его позицию в строке и несоответствующий ему «закрывающий» символ и его позицию в строке; после этого программа завершает свою работу.
4. По окончании анализа строки осуществляется проверка на оставшиеся незакрытые «открывающие» символы. Если таковые будут найдены, то они с их позициями в предложении выводятся на экран.
5. Если все «открывающие» символы были закрыты, то выдается соответствующее сообщение на экран.
Ввод исходного предложения осуществляется с клавиатуры или из файла. Предполагается, что длина исходного предложения не превосходит 255 символов.

Добавлено через 5 мин.
Случайно нажал на "создать" не дав объяснений к задачке. Ломаю башню месяца полтора и ни как не могу реализовать на самом паскале (наверное недостаток практики, а может.. разума). Кому не лень помогите, плз.
volvo
Что именно не получается? Алгоритм же у тебя разжеван до неприличия, проблема с созданием двухсвязного кольцевого списка? Или с тем, что элементом этого списка является не простое число/символ, а сложный тип - стек? Только вчера поднималась тема кольцевых списков, там я давал вот эту ссылку: Результаты поиска

Попробуй разобраться, как работают с кольцевым списком, имеющим информационное поле простого типа, и создать такой список, скажем, для Char-ов - тебе все равно нужны Char-ы в элементе списка, надо же хранить символ (потом я покажу тебе, как прицепить туда же еще и стек для каждого элемента списка)... Начни писать программу, не жди, что кто-то сделает это за тебя полностью...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.