Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Задачи_mod_alpha 2.doc
Скачиваний:
31
Добавлен:
19.03.2016
Размер:
686.59 Кб
Скачать

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

  1. Вывести значение целочисленного выражения, заданного в виде строки S. Выражение определяется следующим образом:

<выражение>  ::= <цифра> | <выражение> + <цифра>  |

<выражение> – <цифра>

  1. Вывести значение целочисленного выражения, заданного в виде строки S. Выражение определяется следующим образом:

<выражение>  ::= <терм> | <выражение> + <терм>  |

<выражение> – <терм>

<терм>  ::= <цифра> | <терм> * <цифра>

  1. Вывести значение целочисленного выражения, заданного в виде строки S. Выражение определяется следующим образом:

<выражение>  ::= <терм> | <выражение>+<терм>  |

<выражение>–<терм>

<терм>  ::= <элемент> | <терм> * <элемент>

<элемент>  ::= <цифра> | (<выражение>)

  1. Вывести значение целочисленного выражения, заданного в виде строки S. Выражение определяется следующим образом:

<выражение>  ::= <цифра> | (<выражение><знак><выражение>) <знак>  ::= + | – | *

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

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

<выражение>  ::= T | F | And (<операнды>) | Or (<операнды>) <операнды>  ::= <выражение>,<выражение>

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

<выражение>  ::= T | F | And (<операнды>) | Or (<операнды>) |

Not (<выражение>)

<операнды>  ::= <выражение>  | <выражение>,<операнды>

  1. Проверить правильность расстановки скобок в строке S. Текст в строке S определяется следующим образом:

<текст>  ::= <элемент>  | <элемент><текст>

<элемент>  ::= a | b | c | (<текст>) | [<текст>] | {<текст>}

Если текст составлен правильно, то вывести True, иначе вывести False.

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

18. Деревья

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

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

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

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

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

  6. Подсчитать сумму элементов на k-ом уровне заданного двоичного дерева (корень считать узлом 1-го уровня).

  7. Подсчитать число узлов на k-ом уровне заданного двоичного дерева (корень считать узлом 1-го уровня).

  8. Подсчитать минимум из чисел, содержащихся в листьях заданного двоичного дерева.

  9. Подсчитать максимум элементов на k-ом уровне заданного двоичного дерева (корень считать узлом 1-го уровня).

  10. Дано вещественное x, целое k. Подсчитать количество чисел, меньших x, в узлах ниже k-ого уровня заданного двоичного дерева.

  11. Упорядочить строки данного текстового файла в порядке возрастания их длин.

  12. Отсортировать в алфавитном порядке слова в заданном текстовом файле, основываясь на k-ой литере каждого слова. Например, если k=3, то слова должны быть отсортированы по возрастанию значения в третьей литере. Если длина слова меньше k, то будем предполагать, что его k-ой литерой, реально не существующей, служит пробел.

  13. Проверить, является ли данное двоичное дерево деревом поиска.

  14. В заданном дереве найти поддерево двоичного поиска с максимальным количеством элементов.

  15. Реализовать нерекурсивную процедуру печати всех элементов заданного двоичного дерева.

  16. Реализовать рекурсивную процедуру печати всех элементов заданного двоичного дерева.

  17. Описать логическую функцию, проверяющую на равенство два заданных двоичных дерева.

  18. Описать логическую функцию, определяющую, есть ли в заданном двоичном дереве хотя бы два одинаковых элемента.

  19. Описать процедуру, которая для заданного N строит двоичное дерево, в котором N полных уровней и на каждом уровне i располагаются узлы, информационные части которых равны i.

  20. Дан текстовый файл. Слова содержат не более 20 символов. Определить частоту использования каждого слова в тексте. Результат оформить в виде таблицы, содержащей слова в лексикографическом порядке.

  21. Даны два текстовых файла A и В. Максимальная длина слова — 20 символов. Занести в файл С те слова из файла A, которых нет в файле В. Для хранения слов файла В и ускорения поиска среди них воспользуйтесь деревом двоичного поиска. В некоторой файловой системе каталог файлов организован в виде упорядоченного дерева. Каждый узел обозначает файл и содержит имя файла, а также, среди прочего, дату последнего обращения к нему, закодированную в виде целого числа. Написать программу, которая обходит дерево и удаляет все файлы, последнее обращение к которым происходило до определенной даты.

  22. Подсчитать сумму элементов на k-ом уровне заданного двоичного дерева (корень считать узлом 1-го уровня).

  23. Подсчитать число узлов на k-ом уровне заданного двоичного дерева (корень считать узлом 1-го уровня).

  24. Подсчитать минимум из чисел содержащихся в листьях заданного двоичного дерева.

  25. Подсчитать максимум элементов на k-ом уровне заданного двоичного дерева (корень считать узлом 1-го уровня).

  26. Дано вещественное x, целое k. Подсчитать количество чисел, меньших x, в узлах ниже k-ого уровня.

  27. Создано некоторое оглавление с использованием разного количества отступов, или символов табуляции. Построить дерево-оглавление.

  28. Проверить, является ли данное двоичное дерево деревом поиска.

  29. Дан текстовый файл. Слова содержат не более 20 символов. Определить частоту использования каждого слова в тексте. Результат оформить в виде таблицы, содержащей слова в лексикографическом порядке.

  30. В заданном дереве найти поддерево двоичного поиска с максимальным количеством элементов.

  31. Подсчитать число узлов в заданном двоичном дереве.

  32. Подсчитать число узлов на k-ом уровне заданного двоичного дерева (корень считать узлом 1-ого уровня).

  33. Даны два текстовых файла A и В. Максимальная длина слова — 20 символов. Занести в файл С те слова файла A, которых нет в файле В. Для хранения слов файла В и ускорения поиска воспользуйтесь деревом двоичного поиска.

  34. Реализовать нерекурсивную процедуру печати всех элементов заданного двоичного дерева.

  35. Реализовать рекурсивную процедуру печати всех элементов заданного двоичного дерева.

  36. Описать логическую функцию, проверяющую на равенство два заданных двоичных дерева.

  37. Описать логическую функцию, определяющую, есть ли в заданном двоичном дереве хотя бы два одинаковых элемента.

  38. Описать процедуру, которая для заданного N строит двоичное дерево, в котором N полных уровней и на каждом уровне i располагаются узлы, информационные части которых равны i.