Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Задачи по программированию.doc
Скачиваний:
13
Добавлен:
09.11.2018
Размер:
276.99 Кб
Скачать

Разбор выражений

Proc70. Вывести значение целочисленного выражения, заданного в виде строки S. Выражение определяется следующим образом: <выражение> ::= <цифра> | <выражение>+<цифра> | <выражение>–<цифра>

Proc71. Вывести значение целочисленного выражения, заданного в виде строки S. Выражение определяется следующим образом: <выражение> ::= <терм> | <выражение>+<терм> | <выражение>–<терм> <терм> ::= <цифра> | <терм>*<цифра>

Proc72. Вывести значение целочисленного выражения, заданного в виде строки S. Выражение определяется следующим образом: <выражение> ::= <терм> | <выражение>+<терм> | <выражение>–<терм> <терм> ::= <элемент> | <терм>*<элемент> <элемент> ::= <цифра> | (<выражение>)

Proc73. Вывести значение целочисленного выражения, заданного в виде строки S. Выражение определяется следующим образом: <выражение> ::= <цифра> | (<выражение><знак><выражение>) <знак> ::= + | – | *

Proc74. Проверить правильность выражения, заданного в виде строки S (выражение определяется по тем же правилам, что и в задании Proc73). Если выражение составлено правильно, то вывести True, иначе вывести False.

Proc75. Проверить правильность выражения, заданного в виде строки S (выражение определяется по тем же правилам, что и в задании Proc73). Если выражение составлено правильно, то вывести 0, в противном случае вывести номер первого ошибочного (или лишнего) символа в строке S.

Proc76. Вывести значение логического выражения, заданного в виде строки S. Выражение определяется следующим образом ("T" — True, "F" — False): <выражение> ::= T | F | And(<операнды>) | Or(<операнды>) <операнды> ::= <выражение>,<выражение>

Proc77. Вывести значение логического выражения, заданного в виде строки S. Выражение определяется следующим образом ("T" — True, "F" — False): <выражение> ::= T | F | And(<операнды>) | Or(<операнды>) <операнды> ::= <выражение> | <выражение>,<операнды>

Proc78. Вывести значение логического выражения, заданного в виде строки S. Выражение определяется следующим образом ("T" — True, "F" — False): <выражение> ::= T | F | And(<операнды>) | Or(<операнды>) | Not(<выражение>) <операнды> ::= <выражение> | <выражение>,<операнды>

Proc79. Проверить правильность расстановки скобок в строке S. Текст в строке S определяется следующим образом: <текст> ::= <элемент> | <элемент><текст> <элемент> ::= a | b | c | (<текст>) | [<текст>] | {<текст>} Если текст составлен правильно, то вывести True, иначе вывести False.

Proc80. Проверить правильность расстановки скобок в строке S (текст в строке S определяется по тем же правилам, что и в задании Proc79). Если текст составлен правильно, то вывести 0; в противном случае вывести номер первой ошибочной скобки или –1, если в строке недостаточно закрывающих скобок.

Деревья

Proc81. Дано упорядоченное дерево глубины N (> 0), каждая внутренняя вершина которого имеет K (< 9) непосредственных потомков, которые нумеруются от 1 до K. Корень дерева имеет номер 0. Записать в текстовый файл с именем Name все возможные пути, ведущие от корня к листьям (каждый путь записывается в отдельной строке файла). Перебирать пути, начиная с "самого левого" и заканчивая "самым правым", при этом первыми заменять конечные элементы пути.

Proc82. Дано упорядоченное дерево глубины N (> 0), каждая внутренняя вершина которого имеет K (< 9) непосредственных потомков, которые нумеруются от 1 до K. Корень дерева имеет номер 0. Записать в текстовый файл с именем Name все пути, ведущие от корня к листьям и удовлетворяющие следующему условию: никакие соседние элементы пути не нумеруются одной и той же цифрой. Каждый путь записывается в отдельной строке файла. Порядок перебора путей — тот же, что в задании Proc81.

Proc83. Дано упорядоченное дерево глубины N (N > 0 — четное), каждая внутренняя вершина которого имеет два непосредственных потомка: A с весом 1 и B с весом –1. Корень дерева C имеет вес 0. Записать в текстовый файл с именем Name все пути от корня к листьям, удовлетворяющие следующему условию: суммарный вес элементов пути равен 0. Каждый путь записывается в отдельной строке файла. Порядок перебора путей — тот же, что в задании Proc81.

Proc84. Дано упорядоченное дерево глубины N (N > 0) того же типа, что и в задании Proc83. Записать в текстовый файл с именем Name все пути от корня к листьям, удовлетворяющие следующему условию: суммарный вес элементов для любого начального отрезка пути неотрицателен1|неположителен2. Каждый путь записывается в отдельной строке файла. Порядок перебора путей — тот же, что в задании Proc81.

Proc85. Дано упорядоченное дерево глубины N (N > 0 — четное) того же типа, что и в задании Proc83. Записать в текстовый файл с именем Name все пути от корня к листьям, удовлетворяющие следующим условиям: суммарный вес элементов для любого начального отрезка пути неотрицателен1|неположителен2, а суммарный вес всех элементов пути равен 0. Каждый путь записывается в отдельной строке файла. Порядок перебора путей — тот же, что в задании Proc81.