ЛР2. Обработка файлов.

Задания

  1. (20) Подсчет строк, слов и символов. (высокоуровневая обработка файла)

    Создать аналог утилиты wc (word counter). Обработать опции -c -w -l короткого вида, предусмотреть возможность отсутствия имени обрабатываемого файла в командной строке. Пробельным символом (разделителем слов) считать любой символ, код которого меньше 33.

  2. (30) Обработка файла растрового изображения (высокоуровневая или низкоуровневая обработка файла)

    Дан файл формата BMP, представляющий собой квадратное изображение. Используя источники в сети Интернет (Википедия, MSDN и т.п.) и/или печатную литературу по графическим форматам, создать программу, которая загружает из переданного ей файла формата BMP заголовки формата, анализирует их, а затем заменяет в исходном файле только те байты, которые позволяют превратить изображение 1 в изображение 2. ЗАПРЕЩЕНА загрузка самого изображения в оперативную память с последующей обработкой.
    Изображение 1Изображение 2
                    
    При проверке решения студент имеет право зафиксировать любые параметры формата (версию, палитру, метод кодирования и т.п.). Преподаватель имеет право произвольно задавать содержимое и размер квадратного изображения, а также цвет пересекающихся отрезков.

  3. (30+20) Охрана файла (низкоуровневая обработка файла)

    Разработать две программы.

    Первая программа, "Охранник", при запуске формирует бинарный файл secure.dat в текущем каталоге (размер файла передается в командной строке). Каждый байт secure.dat "Охранник" заполняет случайным значением от 1 до 255, последний байт в файле = 0. Затем, раз в N миллисекунд (передается в командной строке), "Охранник" считывает файл и сравнивает его с эталоном, хранящемся в оперативной памяти. Если файл отличается от эталона, "Охранник" выводит на экран 1) сообщение "Обнаружен похититель!", 2) позиции всех байтов с некорректным содержимым и 3) эталон, после чего удаляет файл и завершает работу.

    Вторая программа, "Похититель", при запуске ожидает появления файла "secure.dat" в текущем каталоге и его полного заполнения, после чего пытается с периодичностью в X миллисекунд (передается в командной строке) считать из файла один байт со случайной позиции и заменить его в файле на значение 0. Позиции не должны повторяться. При исчезновении файла secure.dat "Похититель" должен вывести на экран 1) сообщение "Тревога, уходим!" и 2) позиции и значения всех байтов, которые удалось похитить, после чего завершить работу. При успешном чтении всех байтов из файла "Похититель" должен сформировать файл abducted.dat из похищенных байтов и завершить работу. При удачном "похищении" содержимое файла abducted.dat будет полностью соответствовать эталону, сформированному "Охранником".