Лабораторные работы по дискретному анализу

Все работы должны удовлетворять следующим условиям:

  1. Языки программирования: C или C++ (с ограниченным использованием стандартной библиотеки языка C++). При проверке используется компиляторы gcc и g++ версий 3.x и 4.x, на 32-х и 64-х битных платформах, работающих под управлением операционных систем семейства Unix.
  2. Формат ввода и вывода строго регламентирован в каждой лабораторной работе.
  3. Программа не может создавать лишних (временных) файлов во время работы.
  4. Везде, если не указано иного, подразумевается, что данные вводятся из файла стандартного ввода, а выводятся в файл стандартного вывода.
  5. Программа не должна ни при каких условиях завершаться аварийно — если в какой-то момент времени программа не может быть выполнена по каким-либо причинам (отсутствие оперативной памяти, проблемы с разбором входных данных и т.п.) она должна напечатать на стандартный вывод строчку в формате ERROR: и дальше описание возникшей проблемы в свободной форме, после чего завершиться с кодом возврата 0.

Сдавать написанные не вами лабоработорные и отчеты категорически запрещено.

Отчеты по лаборатоным

Шаблон отчетов: (pdf, tex).

Список заданий

Лаборатрная работа №1. Сортировка за линейное время
Лаборатрная работа №2. Словарь
Лаборатрная работа №3. Исследование качества программ
Лаборатрная работа №4. Поиск образца в строке
Лаборатрная работа №5. Суффиксные деревья
Лаборатрная работа №6. Калькулятор
Лаборатрная работа №7. Динамическое программирование
Лаборатрная работа №8. Жадные алгоритмы
Лаборатрная работа №9. Графы

Все задания кроме третьего будут проверяться автоматически.

Компиляция производится одной из следующих команд:

gcc -pedantic -Wall -std=c99 -Werror -Wno-sign-compare -lm
g++ -pedantic -Wall -Werror -Wno-sign-compare -Wno-long-long -lm