Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СТА (лекции+лабы) / СТА Лаба 2.docx
Скачиваний:
52
Добавлен:
16.03.2016
Размер:
93.81 Кб
Скачать

Контрольные вопросы

  1. АТД “отображение” - основные операции, простейшие способы реализации.

  2. АТД “отображение” - использование индексов массивов как ключей особого вида.

  3. АТД “множество” - основные операции, простейшие способы реализации.

  4. АТД “множество” - повышение быстродействия за счет упорядочивания ключей.

  5. Реализация АТД “множество” на основе характеристических векторов.

  6. Понятие вычислительной сложности. Основные функции оценки вычислительной сложности.

  7. Алгоритм бинарного поиска.

  8. Простейшие алгоритмы сортировки - пузырьковая, вставками, выбором.

  9. Алгоритм сортировки слиянием.

  10. Алгоритм быстрой сортировки.

Пример решения задачи базового уровня

Задача:Пользователь вводит в программу через консоль последовательность пар ключ-значение из положительных целых чисел, завершая ввод одним нулем либо одним отрицательным числом. Затем пользователь вводит еще одно положительное число-ключ. Программа ищет среди ранее введенных пар ключ-значение запись с таким ключом и, в случае успеха, выдает на экране соответствующее ему значение. Если такого ключа нет, программа пишет сообщение об ошибке. Если ключ встречается более одного раза, программа выдает последнее из введенных значений.

Решение:

#include "integer_map.hpp"

#include <iostream>

int main ()

{

// Создаем объект-отображение

IntegerMap * pMap = IntegerMapCreate();

// Вводим последовательность пар ключ-значение

std::cout << "Input sequence of integer key-value pairs: " << std::endl;

while ( true )

{

// Вводим до появления ошибок или ввода неположительного значения

int tempKey, tempValue;

std::cin >> tempKey >> tempValue;

if ( std::cin && tempKey > 0 )

// Помещаем пару ключ-значение в отображение

IntegerMapInsertKey( * pMap, tempKey, tempValue );

else

break;

}

// Вводим интересующий ключ

std::cout << "Input interested key: " << std::endl;

int searchKey;

std::cin >> searchKey;

if ( std::cin )

{

// Если ключ имеется в отображении, печатаем соответствующее ему значение

if ( IntegerMapHasKey( * pMap, searchKey ) )

std::cout << "Result: " << IntegerMapFind( * pMap, searchKey );

// Иначе, печатаем, что ключ отсутствует

else

std::cout << "Error: Key is undefined.";

}

else

// Ошибка ввода ключа

std::cout << "Error: Key is not a number.";

std::cout << std::endl;

// Освобождаем ресурсы объекта-отображения

IntegerMapDestroy( pMap );

}

Результат выполнения:

Соседние файлы в папке СТА (лекции+лабы)