Правила оформления и написания работ

Основные правила

  1. Обработка ошибок

    • Все ошибки (например, некорректный ввод) должны обрабатываться.

    • При возникновении ошибки программа выводит сообщение на английском языке в stderr и завершается с ненулевым кодом возврата.

    • Падение программы (необработанные исключения, аварийное завершение, assert, exit) недопустимо.

    • При запуске без аргументов следует выводить справку о том, как следует запускать эту программу (аналог -h / --help для многих консольных программ).

  2. Чистота кода

    • Запрещены:

      • Закомментированные блоки кода.

      • Неиспользуемые переменные и функции.

      • Избыточные зависимости между компонентами.

    • Требуется логичное разделение на файлы с минимальными зависимостями.

  3. Формат программы

    • Результат работы – консольное приложение, обрабатывающее аргументы командной строки.

    • Ввод/вывод осуществляется через файловые потоки. Интерактивный режим не поддерживается.

    • Успешное выполнение – код возврата 0, иначе – ненулевой код + сообщение в stderr.

circle-info

Список кодов завершения – febooti.comarrow-up-right.


Критерии оценки

Чистый, эффективный и отказоустойчивый код – ключевое требование. Нарушение правил ведёт к снижению оценки.

Обязательные требования

Программа должна:

  1. Соответствовать языку и стандартам, указанным в задании.

  2. Решать поставленную задачу.

  3. Использовать только стандартные библиотеки, если иное не обозначено в условии.

  4. Корректно освобождать ресурсы (память, файлы).

  5. Обрабатывать ошибки:

    • Невозможность открыть файл.

    • Ошибки выделения памяти.

    • Неверное число аргументов командной строки.

    • Некорректный формат данных (если не гарантируется их валидность).

  6. Вывод данных:

    • Результат – только в указанный файл или stdout (согласно заданию).

    • Сообщения об ошибках – строго в stderr.

  7. Дополнительные ограничения:

    • Запрещено создавать временные/пустые файлы при ошибках.

    • Макросы не должны называться DEBUG, NDEBUG и прочие стандартные макросы. Создавать свои можно.

Потеря баллов

  • Производительность: Тест считается проваленным, если программа не завершается за разумное время.

  • Запрещённые библиотеки: Использование нестандартных заголовков (например, <bits/stdc++.h>).

  • Неявные зависимости: Программа использует функции, которые явно не объявлены в файле с исходным кодом (например, функции из <algorithm> без подключения <algorithm> и пр.).

  • Нечитаемый код: Код невозможно проверить на соответствие требований.

  • Падение программы = автоматический провал теста, даже если выводимый результат корректен.

triangle-exclamation

Last updated