Задание
1. В текстовом файле записан текст, сбалансированный по круглым скобкам:
<текст>::=<пусто> | <элемент><текст>
<элемент>::=<буква> | (<текст>)
Требуется для каждой пары соответствующих открывающей и закрывающей скобок напечатать их позиции в тексте, упорядочив пары номеров в порядке возрастания номеров позиций открывающих скобок. Использовать стек.
2. В текстовом файле f записано без ошибок логическое выражение <LV> в следующей форме: <LV>::=true | false | ( LV) | (<LV> <LV>) | (<LV> <LV>), где знаки - отрицание, конъюнкция, дизъюнкция соответственно. Вычислить (как boolean) значение этого выражения. Использовать дек.
3. За один просмотр файла, содержащего действительные числа, и без использования дополнительных файлов напечатать элементы файла в следующем порядке: сначала все числа меньше а, затем числа из промежутка [a,b] , потом числа больше b, сохраняя исходный порядок в каждой из этих групп чисел. Использовать очередь.
4. Под «выражением» будем понимать конструкцию вида:
<выражение>::=<терм> | <терм><знак + -><выражение>
<знак + ->::=+ | -
<терм>::=<множитель> | <множитель>*<терм>
<множитель>::=<число> | <переменная> | (<выражение>) | <множитель><число>
<число>::=<цифра>
<множитель>::=<буква>
Знак означает возведение в степень.
Постфиксная запись – запись, где знак операции стоит после операндов (a*(b+c)®abc+*) (ab+c®ab*c+). Написать программу с процедурой tran(infix,postfix), которая переводит выражение, записанное в обычной (инфиксной) форме в текстовом файле f, в постфиксную форму и в таком виде записать в текстовый файл q. Использовать стек.
5. Дано определение:
type Name = (Anna, . . . , Max);
Children = array [Name, Name] of boolean;
Kin = file of Name;
Считая заданными имя I и массив A типа Children (А[x,y] = true, если человек по имени y является ребенком человека по имени x) записать в файл f типа Kin имена всех потомков человека с именем I в следующем порядке, сначала имена всех его детей, затем внуков и т.д. Использовать дек.
6. В текстовом файле записан текст, сбалансированный по круглым скобкам:
<текст>::=<пусто> | <элемент><текст>
<элемент>::=<буква> | (<текст>)
Требуется для каждой пары соответствующих открывающей и закрывающей скобок напечатать их позиции в тексте, упорядочив пары номеров в порядке возрастания номеров позиций закрывающих скобок. Использовать очередь.
7. Проверить, является ли содержимое текстового файла t правильной записью формул вида:
<формула>::=<терм> | <терм>+<формула> | <терм>-<формула>
<терм>::=<имя> | (<формула>) | [<формула>] | {<формула>}
<имя>::=x|y|z Использовать стек.
8. На участке железной дороги между «А» и «В» имеется тупиковая ветвь «С». В точке «В» находятся два состава, вагоны которых перепутаны между этими двумя составами. Необходимо перегнать вагоны из «В» в «А» и при этом упорядочить их по своим составам. Тупиковая ветвь «С» вмещает сколь угодно много вагонов. Использовать очередь.