Архив‎ > ‎

Математическое обеспечение, практикум по программированию

144 гр, осень 2008
Если Вы обнаружили в тексте опечатку, содержательную ошибку, неточность или просто хотите что-то сообщить автору, можете оставить отзыв.

Требования

Критерии получения зачета

Задачи делятся на 3 категории (см. таблицу успеваемости).

  1. СО - сверхобязательные задания. Не выполнив их, зачет получить не получится. Сделав только их и побеседовав устно, зачет можно получить, но не раньше 24 (вечера 23) января. И при этом обязательные задачи останутся долгом на следующий семестр. Это экстренный вариант, и ориентироваться на него не стоит.
  2. О - обязательные задачи. Выполнив их и сверхобязательные, можно получить зачет немедленно.
  3. НО - необязательные. Выполнив их, можно набить руку, получить удовольствие от мирного труда творчества, повысить самооценку.

Пример правильно оформленой и откомментированной программы

Успеваемость

Данные об успеваемости публикуются с устного согласия студентов группы. Для просмотра таблицы требуется браузер с поддержкой JavaScript. Без JavaScript таблицу можно посмотреть по ссылке.


Формулировки задач

  1. NxN - написать программу, разбивающие числа 1..N2 на N групп по N чисел так, чтобы сумма чисел в группе была одинаковой для всех групп;
  2. fib - написать программу, вычисляющую числа Фибоначчи при помощи рекурсивной функции;
  3. cfib - написать программу, вычисляющую числа Фибоначчи и записывающую уже вычисленные числа Фибоначчи в массив, который используется при последующих вычислениях чисел Фибоначчи;
  4. zring - написать программу, которая считает, сколько раз можно прибавить нечетное число к числу 0, хранящемуся в переменной типа short (16 бит для x86), пока оно опять не станет равно 0;
  5. z-z - написать программу, иммитирующую вычитание целых чисел при помощи сложения и битовых операций;
  6. sum_1_3 - написать программу, иллюстрирующую разницу при подсчете частичной суммы геометрической прогрессии в прямом и обратном направлениях при помощи арифметики с плавающей запятой. За первый член прогрессии можно брать 1/3, за знаменатель - тоже 1/3;
  7. strlen - написать функцию, вычисляющую длину строки, аналогично функции strlen из стандартной библиотеки;
  8. mult - написать программу, умножающую без использования операции умножения число на целое число за количество шагов, не превышающее логарифма абсолютной величины целого множителя по основанию 2;
  9. rabinkarp - написать программу, выводящую индексы вхождения подстроки в строку при помощи алгоритма Рабина-Карпа;
  10. modules - любую из написанных ранее программ, содержащих хотя бы один глобальный идентификатор, кроме main (например, ещё одну функцию), переписать, вынеся его в другой модуль. Заголовочный файл должен содержать директивы препроцессора, защищающие его от повторного включения.
  11. sorting - реализовать два любых алгоритма сортировки при помощи функций вида void xxxsort(int length, void (*swap)(int i, int j), int (*less)(int i, int j)), и по комплекту функций swap  и less для массивов char* и int. Функции swap и less должны считать количество вызовов. Для массивов строк и целых чисел должны вызываться разные алгоритмы сортировки, после вызова должно выдаваться количество сравнений и перестановок для разных алгоритмов и данных.
  12. list1 - написать программу, включающую модуль (в т.ч. заголовочный файл) floatlist, описывающий структуру floatlist, а так же функции print, b_add, b_delete. В качестве заголовочного файла и шаблона исходного кода можно (да, пожалуй, и должно) воспользоваться файлами floatlist.* из задания №14 (stackcalc).
  13. самост1 (не д.з.) - написать программы для стекового калькулятора, вычисляющие
    1. площадь треугольника по формуле Герона, на стеке даны 3 стороны треугольника;
    2. корни квадратного уравнения в форме ax2+bx+c=0, на стеке даны a, b и c;
    3. корни квадратного уравнения в форме x2+px+q=0, на стеке даны p и q.
  14. stackcalc - написать стековый калькулятор в соответствии с требованиями, приведенными по ссылке.

Comments