Правила оформления и написания работ
Last updated
Last updated
Работы должны удовлетворять следующим требованиям:
Корректно обрабатывать ошибки при взаимодействии с внешним миром: ошибки ввода-вывода, некорректный пользовательский ввод и прочее. Если это произошло – необходимо вывести сообщение об ошибке (на английском языке) и завершить исполнение с ненулевым кодом возврата.
Программа никогда не должна падать. Падение – признак ошибок в реализации.
Программа не должна содержать лишних сущностей: закомментированных больших участков кода, неиспользуемых переменных и функций и тому подобное. Это засоряет код и увеличивает время проверки.
Должно присутствовать разумное разделение на файлы и правильно сформированные заголовочные файлы с минимальными зависимостями. Неразумное разделение неблагоприятно влияет на состояние проверяющего, что также увеличивает время проверки.
Результат выполнения лабораторной работы – консольная программа, обрабатывающая параметры командной строки и использующая стандартные потоки ввода и вывода. Тестирование заданий не предусматривает интерактивного взаимодействия. Ошибки входных данных должны немедленно обрабатываться, так как исправлять ввод при неинтерактивном взаимодействии невозможно.
При успешном выполнении программа возвращает код 0. Если же что-то пошло не так, то она сообщает о проблеме через ненулевой код возврата (exit code) и сообщение об ошибке в поток вывода ошибок. Если программа неожиданно завершается с "не вашим" кодом возврата, то полезную информацию о возможных причинах можно найти, например, на .
Кроме правильности результата будет учитываться скорость работы программы. То есть, если проверяющий не дождался за разумное время завершения работы программы, то тест будет считаться не пройденным.
В программе можно использовать только стандартные библиотеки и заголовочные файлы. Например, <bits/stdc++.h>
таковым не является и его использование влечёт за собой потерю баллов.
Если программа использует функции, которые явно не объявлены в файле с исходным кодом (например, функции из <algorithm>
без подключения <algorithm>
и пр.), то за это также будут снижаться баллы (даже если у вас всё работает).
Программа должна:
быть написана на допустимом по условии языке программирования;
выполнять поставленную задачу;
не использовать внешние библиотеки, если иное не указано в условии;
всегда корректно освобождать память и закрывать файлы;
обрабатывать ошибки:
файл не открылся;
не удалось выделить память;
передано неверное число аргументов командной строки;
формат файла не поддерживается (если по условию не гарантируется корректность входных данных). Формат файла != его расширение.
В этих случаях необходимо выдавать сообщение об ошибке (подробнее ниже) и корректно завершаться с соответствующим кодом возврата.
не писать в поток вывода ничего, если иное не указано по заданию.
не писать в поток вывода ошибок ничего лишнего, кроме сообщений об ошибках.
не создавать пустые файлы, если программа завершилась неуспешно.
не должно создаваться никаких лишних файлов (временные файла для отладки не должны плодиться на тестовом стенде).
Если вы создаёте свои макросы, то их название не должно быть DEBUG
, _DEBUG
, NDEBUG
и прочие, определяемые компиляторами имена. Допустимы любые другие названия из заглавных букв и символов подчёркивания.
Все результаты выводятся в файл, имя которого указано в аргументах командной строки ИЛИ в стандартный поток вывода (stdout). Вывод результатов в стандартный поток вывода вместо файла (если по заданию нужно записывать результат в файл) или в стандартный поток вывода ошибок вместо стандартного потока вывода приравнивается к непройденному тесту.
Сообщения об ошибках (неверное число аргументов, неправильные параметры программе и пр.) выводятся в стандартный поток вывода ошибок (stderr). Вывод сообщений в стандартный поток вывода приравнивается к непройденному тесту.
Падение программы и её нецивилизованное завершение приравнивается к непройденному тесту, даже если программа в файл или в stdout успела записать верный результат. Падение программы может быть вызвано:
assert
брошенным необработанным исключением
ошибкой в runtime (выход за границы диапазона, обращение к неоткрытому файлу и пр.)
завершение с exit
,terminate
,abort
и подобным.