Задание. 1. В текстовом файле записан текст, сбалансированный по круглым скобкам

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. На участке железной дороги между «А» и «В» имеется тупиковая ветвь «С». В точке «В» находятся два состава, вагоны которых перепутаны между этими двумя составами. Необходимо перегнать вагоны из «В» в «А» и при этом упорядочить их по своим составам. Тупиковая ветвь «С» вмещает сколь угодно много вагонов. Использовать очередь.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: