Практикум на ЭВМ (171 группа, первый семестр)

Задания

14.09.2012

    1. Факториал - итерацией.
    2. Факториал - рекурсией.
    3. Умножение двух чисел без использования операции умножения.
    4. Возведение числа в целочисленную степень.
    5. Проверить, является ли строка палиндромом: словом или текстом, одинаково читающимся во всех направлениях. (Например: "I prefer Pi.")

17.09.2012

    1. Найти количество вхождений подстроки S1 в строке S.

21.09.2012 (срок - 05.10.2012)

    1. Проверить строку, содержит ли она правильную скобочную последовательность.
    2. Например, "(()())" и "if (1+(3+4)>5)" - содержат, а "()(", "(()))(" - нет.
    3. Посчитать сумму чётных чисел Фибоначчи не превосходящих N.
    4. Количество путей на целочисленной решётке из (0,0) в (I,J)
    5. Посчитать сумму простых чисел не превосходящих N.
    6. Найти наименьшее общее кратное чисел 1..N.

24.09.2012 (срок - 12.10.2012)

    1. Вывести битовое представление целого числа N с использованием битовой арифметики:
    2. n >> i - побитовый сдвиг вправо числа n на i бит
    3. n << i - побитовый сдвиг влево числа n на i бит
    4. n & a - побитовое умножение двух чисел (логическое "И" над каждым битом)
    5. n | a - побитовое сложение двух чисел (логическое "ИЛИ" над каждым битом)
    6. n ^ a - побитовое "исключающее ИЛИ"
    7. ~n - побитовое отрицание
    8. Вывести графическое представление числа с плавающей точкой (float):
    • Стандарт IEEE 754
      • Одинарная точность
      • Для приведения из float к int можно использовать union (объединение) или приведение типа через (void*)
    • Пример печати
    1. Посчитать корень числа с плавающей точкой (float или double) с адекватной точностью.

01.10.2012 (срок - 22.10.2012)

    1. Реализовать сортировку массива чисел (любую), используя динамическое выделение памяти по массив.
    2. Использовать уязвимость "переполнения буфера" в функции gets
      • Программа должна считывать строку функцией gets
      • В программе есть операторы printf("No") и printf("Yes")
      • Если нет переполнения буфера, то программа всегда должна печатать "No"
      • При специально подобранном входе, вызывающем переполнение буфера, выполнение программы должно изменяться так, чтобы напечаталось "Yes"
      • После печати сообщения "Yes" допустимо некорректное завершение программы
      • Вход может зависеть от используемого компилятора и ОС

Требования

    • Красивое форматирование кода и комментарии, при необходимости.
    • Наличие заголовка программы - комментария с авторством и идентификатором программы.

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

2012-2013.IT.171