Вниманию для учащихся, студентов и просто для новичков, желающих начать писать проги на Си
Если хотите поработать на пользу науке и получить реальный опыт создания боевого софта, у меня для вас есть простенькое задание.
Задание 1
Имеется некий двоичный файл.
В этом файле записана информация от датчиков событий. Событием считается появление на выходе датчика короткого единичного (логическая единица) импульса. Всего датчиков -- четыре. Каждая запись -- это один байт. Четыре старших бита всегда нулевые, а четыре младших -- соответствуют четырем датчикам. Запись осуществляется каждую миллисекунду. Таким образов за одну секунду накапливается 1000 байт. Установка работает круглосуточно, поэтому размер суточного файла составляет 86400000 байт. Допускается, что из-за разности и перепадов температур, внутренние часы компьютера и тактовый генератор установки могут иметь небольшие расхождения. Поэтому, реальный размер файлов может колебаться в некоторых пределах. Поскольку от датчиков события приходят достаточно редко, файлы данных состоят в основном из нулевых байт.
Вот пример фрагмента такого файла. Фрагмент гипотетический, на самом деле события происходят намного реже. Здесь каждый отсчет времени (каждый байт) для удобства объяснения выделен в отдельную строку, хотя настоящий файл является двоичным.
...
0x00
0x00
0x00
0x02 < зафиксировано событие от второго датчика
0x00
0x01 < зафиксировано событие от первого датчика
0x00
0x01 < зафиксировано событие от первого датчика
0x04 < зафиксировано событие от третьего датчика
0x00
0x00
0x00
0x00
0x00
0x02 < зафиксировано событие от второго датчика
0x00
0x00
0x00
0x05 < зафиксированы события от первого и третьего датчиков
0x00
0x08 < зафиксировано событие от четвертого датчика
0x00
...Мы видим, что первый датчик сработал три раза, второй -- два раза, третий -- два раза и четвертый -- один раз. Мы так же можем подсчитать, что время между событиями для второго датчика составляет 11 отсчетов. А для третьего -- 10 отсчетов.
Нужно написать программу, которая определяет минимальное и максимальное расстояние (по времени, в отсчетах) между событиями для каждого канала. Прога должна выводит результат на консоль. Формат вывода пока произвольный, т.е. можно вывести четыре строи по два числа в каждой или две строки по четыре числа. Потом по ходу работы требования возможно будут уточнены.
Файлы событий для "боевой" отладки проги предоставлю по запросу. Файлы хорошо сжимаются до размеров от 4 до 20 кБ. Так что не стоит беспокоиться от перекачке десятков-сотен мегабайт.
Если Вам интересно, давайте начнем работать. Задавайте свои вопросы.
И еще пара слов не вам,
* а всяким жлобам, которые говорят, что я бесплатно эксплуатирую рабочую силу -- я сам могу написать это прогу. Мне это не сложно сделать. Но мне это, во первых, не интересно, а во вторых, новичкам будет намного приятнее почувствовать себя причастным к реальным делам. Ну сколько ж можно писать одни и те же Хелловорлды!
* и персонально DrBatty. Док, я знаю, что Вы способны эти задачи щелкать как семечки. Пожалуйста, не отбирайте их у новичков!