- •Задачник Pascal Taskbook Линейные алгоритмы
- •Логические выражения
- •Условные операторы
- •Оператор выбора
- •Операторы цикла
- •Обработка последовательностей
- •Минимумы и максимумы
- •Одномерные массивы
- •Двумерные массивы (матрицы)
- •Символы и строки
- •Обработка числовых данных
- •Массивы
- •Простейшие рекурсивные алгоритмы
- •Разбор выражений
- •Деревья
- •Двоичные файлы
- •Текстовые файлы
Разбор выражений
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.