Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
metodichka_SI.doc
Скачиваний:
30
Добавлен:
23.02.2015
Размер:
2.05 Mб
Скачать

3 Уровень сложности

  1. Построить частотный словарь.

  2. Формулу вида

<формула>::=<терминал>|(<формула><знак><формула>)

<знак>::= + | - | *

<терминал>::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

можно представить в виде двоичного дерева ("дерева-формулы") согласно следующим правилам: формула из одного терминала (цифры) представляется деревом из одной вершины с этим терминалом, а формула вида (f1sf2) – деревом, в котором корень – это знакs, а левое и правое поддеревья – это соответствующие представления формулf1 иf2.

Пример: (5*(3+8))

    1. по формуле из текстового файла построить соответствующее дерево-формулу;

    2. вычислить (как целое число) значение дерева-формулы;

    3. распечатать дерево-формулу в инфиксной форме;

    4. распечатать дерево-формулу в префиксной форме;

    5. распечатать дерево-формулу в постфиксной форме.

Построить дерево-пирамиду, т.е. дерево, обладающее следующими признаками: во-первых, значение элемента в любом узле <= значений его “сыновей” (корень – наименьший элемент дерева), во-вторых, концевые узлы расположены не более, чем на двух уровнях, причем, нижний уровень сдвинут влево насколько это возможно. В дереве нет "дырок".

  1. Формулу вида

<формула>::=<терминал>|(<формула><знак><формула>)

<знак>::= + | - | *

<терминал>::=<цифра>|<переменная>

<цифра>::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

<переменная>::=a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z

можно представить в виде двоичного дерева ("дерева-формулы") согласно следующим правилам: формула из одного терминала представляется деревом из одной вершины с этим терминалом, а формула вида (f1sf2) – деревом , в котором корень – это знакs, а левое и правое поддеревья – это соответствующие представления формулf1 иf2.

  1. Упростить дерево-формулу T, заменяя в нем все поддеревья, соответствующие формулам (f+0), (0+f), (f-0), (f*1), (1*f), на поддеревья, соответствующие формулеf, а поддеревья, соответствующие формулам (f*0) и (0*f), – на вершину с 0.

  2. Преобразовать дерево-формулу T, заменяя в нем

    поддеревья, соответствующие формуле

    на поддеревья, соответствующие формуле

    ((f1+f2)*f3)

    ((f1*f3)+(f2*f3))

    ((f1-f2)*f3)

    ((f1*f3)-(f2*f3))

    (f1*(f2+f3))

    ((f1*f2)+(f1*f3))

    (f1*(f2-f3))

    ((f1*f2)-(f1*f3))

  3. Преобразовать дерево-формулу T, заменяя в нем

поддеревья, соответствующие формуле

на поддеревья, соответствующие формуле

((f1*f3)+(f2*f3))

((f1+f2)*f3)

((f1*f3)-(f2*f3))

((f1-f2)*f3)

((f1*f2)+(f1*f3))

(f1*(f2+f3))

((f1*f2)-(f1*f3))

(f1*(f2-f3))

4. Составить программу, которая содержит текущую информацию о книгах в библиотеке.

Сведения о книгах включает: номер УДК, фамилия и инициалы автора, название, год издания, количество экземпляров данной книги в библиотеки.

Программа должна обеспечивать:

  • начальное формирование данных обо всех книгах в библиотеке в виде двоичного дерева,

  • добавление данных о книгах, вновь поступающих в библиотеку, удаление данных о списываемых книгах,

  • по запросу выдаются сведения о наличии книг в библиотеке, упорядоченные по годам издания.

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

Каждая заявка включает: пункт назначения, номер рейса, фамилию и инициалы пассажира, желаемую дату вылета. Программа должна обеспечивать:

  • хранение всех заявок в виде двоичного дерева,

  • добавление и удаление заявок,

  • по заданному номеру рейса и дате вылета вывод заявок с их последующем удалением,

  • вывод всех заявок.

  1. Англо-русский словарь построен в виде двоичного дерева. Каждая компонента содержит английское слово, соответствующее ему русское слово и счетчик количества обращений к данной компоненте. Первоначальное дерево формируется в порядке английского алфавита. В процессе эксплуатации словаря при каждом обращении к компоненте к счетчику обращений прибавляется единица. Написать программу, которая:

  • Обеспечивает начальный ввод словаря с конкретными значениями счетчиков обращений;

  • Формирует новое представление словаря в виде двоичного дерева по следующему алгоритму:

  1. в старом словаре ищется компонента с наибольшим значением счетчика обращений;

  2. найденная компонента заносится в новый словарь и удаляется из старого;

  3. переход к п.а) до исчерпания исходного словаря.

  • Производит вывод исходного и нового словаря.

  1. На международной телефонной станции картотека абонентов, содержащая сведения о телефонах и их владельцах, организована в виде двоичного дерева.

Написать программу, которая:

  • обеспечивает начальное формирование картотеки в виде двоичного дерева;

  • производит вывод всей картотеки;

  • вводит номер телефона и время разговора;

  • выводит извещение на оплату телефонного разговора.

  1. Автоматизированная информационная система на железнодорожном вокзале содержит сведения об отправлении поездов дальнего следования. Для каждого поезда указывается: номер поезда, станция назначения, время отправления. Данные в информационной системе организованы в виде двоичного дерева. Написать программу, которая:

  • обеспечивает первоначальный ввод данных в информационную систему и формирование двоичного дерева;

  • производит вывод всего дерева;

  • вводит номер поезда и выводит все данные об этом поезде;

  • вводит название станции назначения и выводит данные обо всех поездах, следующих до этой станции.

324

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]