Правила оформления и написания работ
Основные правила
Обработка ошибок
Все ошибки (например, некорректный ввод) должны обрабатываться.
При возникновении ошибки программа выводит сообщение на английском языке в stderr и завершается с ненулевым кодом возврата.
Падение программы (необработанные исключения, аварийное завершение,
assert,exit) недопустимо.При запуске без аргументов следует выводить справку о том, как следует запускать эту программу (аналог
-h/--helpдля многих консольных программ).
Чистота кода
Запрещены:
Закомментированные блоки кода.
Неиспользуемые переменные и функции.
Избыточные зависимости между компонентами.
Требуется логичное разделение на файлы с минимальными зависимостями.
Формат программы
Результат работы – консольное приложение, обрабатывающее аргументы командной строки.
Ввод/вывод осуществляется через файловые потоки. Интерактивный режим не поддерживается.
Успешное выполнение – код возврата 0, иначе – ненулевой код + сообщение в stderr.
Список кодов завершения – febooti.com.
Критерии оценки
Чистый, эффективный и отказоустойчивый код – ключевое требование. Нарушение правил ведёт к снижению оценки.
Обязательные требования
Программа должна:
Соответствовать языку и стандартам, указанным в задании.
Решать поставленную задачу.
Использовать только стандартные библиотеки, если иное не обозначено в условии.
Корректно освобождать ресурсы (память, файлы).
Обрабатывать ошибки:
Невозможность открыть файл.
Ошибки выделения памяти.
Неверное число аргументов командной строки.
Некорректный формат данных (если не гарантируется их валидность).
Вывод данных:
Результат – только в указанный файл или stdout (согласно заданию).
Сообщения об ошибках – строго в stderr.
Дополнительные ограничения:
Запрещено создавать временные/пустые файлы при ошибках.
Макросы не должны называться DEBUG, NDEBUG и прочие стандартные макросы. Создавать свои можно.
Потеря баллов
Производительность: Тест считается проваленным, если программа не завершается за разумное время.
Запрещённые библиотеки: Использование нестандартных заголовков (например,
<bits/stdc++.h>).Неявные зависимости: Программа использует функции, которые явно не объявлены в файле с исходным кодом (например, функции из
<algorithm>без подключения<algorithm>и пр.).Нечитаемый код: Код невозможно проверить на соответствие требований.
Падение программы = автоматический провал теста, даже если выводимый результат корректен.
Причины падение программы:
Необработанное исключение.
Assert, exit, terminate, ...
Runtime-ошибка (выход за границы массива, обращение к null и т.д.).
Last updated