В протоколе проверки решения выводятся результаты прохождения вашим решением каждого теста. Результаты могут быть:
- OK - Тест пройден, программа работает верно на этом наборе исходных данных;
- Ошибка компиляции - программа содержит синтаксическую ошибку (или, возможно, вы сдали ее, неверно язык программирования или его версию). В этом случае в окне протокола также будет показан номер строки, в которой есть ошибка и текст сообщения об ошибке, по которому можно примерно определить, что именно произошло (не закрылась скобка, использовано неправильное имя переменной и т.д.);
- Превышен лимит времени - программа работает дольше, чем допускается в данной задаче. Возможно, не убраны какие-то задержки, которые вы ставили на момент отладки или для решения задачи выбран не оптимальный алгоритм.
- Неверный формат вывода - программа выводит не то (или не только то), что требуется по задаче. Возможно, не убран какой-то промежуточный отладочный вывод. Рекомендуем внимательно прочесть условия задачи (часть, которая называется "Выходные данные".
- Ошибка времени выполнения - во время работы программы произошла ошибка. Например: программа пыталась записать в файл, использование которого не предусмотрено условием; программа пыталась выполнить деление на 0. В это случае в окне протокола также отображается код ошибки, по которому можно определить причину ее возникновения.
- Превышен лимит по памяти - программа использует для хранения данных не оптимальную структуру.
Как сдавать программы на Паскале
Пример
Пусть даны два целых числа (обозначим их A и B) и требуется найти и вывести их сумму.
Программа для решения этой задачи будет выглядеть так:
Комментарии по данной программе:
- Так как в условии задачи явно не сказано, вводятся ли числа через пробел или каждое число будет находиться на отдельной строке, то лучше использовать команду read(), как более универсальную, так как она способна пропускать не только пробелы, но и знаки перевода строки;
- В условии задачи требуется вывести только сумму чисел, поэтому никаких текстовых сообщений, вроде "Искомая сумма равна" и т.п. быть не должно. Программа должна выводить ровно то, что от нее требуется по условию: не больше и не меньше.
- Иногда ваши решения задач из разделов для начинающих могут не проходить все тесты. Это связано с тем, что не все компиляторы с языка Паскаль считают тип integer достаточно вместительным. В этом случае либо следует использовать тип longint (длинное целое), либо попытаться сдать вашу программу, указав другой компилятор языка Паскаль.
Пример
Пусть даны два целых числа (обозначим их A и B) и требуется найти и вывести их сумму.
Программа для решения этой задачи будет выглядеть так:
Комментарий к решению:
В условии задачи требуется вывести только сумму чисел, поэтому никаких текстовых сообщений, вроде "Искомая сумма равна" и т.п. быть не должно. Программа должна выводить ровно то, что от нее требуется по условию: не больше и не меньше.
Как сдавать программы на BASIC
Пример
Пусть даны два целых числа (обозначим их A и B) и требуется найти и вывести их сумму.
Программа для решения этой задачи будет выглядеть так:
Комментарии по данной программе:
- В условии задачи требуется вывести только сумму чисел, поэтому никаких текстовых сообщений, вроде "Искомая сумма равна" и т.п. быть не должно. Программа должна выводить ровно то, что от нее требуется по условию: не больше и не меньше.
- Иногда ваши решения задач из разделов для начинающих могут не проходить все тесты. Это связано с тем, что либо непосредственно в тестах используются "длинные целые" (Long), либо такие числа могут получиться в качестве ответа (например, при перемножении двух обычных целых). В этом случае рекомендуется проанализировать алгоритм решения и использовать тип Long в местах возможного выхода за границы типа Integer.
Обратите внимание: особенностью тестирующей системы этого сайта является тот факт, что для успешной работы с программами на Java требуется, чтобы программа на языке Java содержала единственный класс. Допускается использование вложенных классов.
Пример
Пусть даны два целых числа (обозначим их A и B) и требуется найти и вывести их сумму.
Программа для решения этой задачи будет выглядеть так:
Комментарии по данной программе:
В условии задачи требуется вывести только сумму чисел, поэтому никаких текстовых сообщений, вроде "Искомая сумма равна" и т.п. быть не должно. Программа должна выводить ровно то, что от нее требуется по условию: не больше и не меньше.
Особенностью программ на PHP является то, что вместо ввода данных с клавиатуры следует пользоваться вводом из файлов. При этом можно использовать как стандартный поток stdin (как в примере), либо файл с именем input.txt.
Пример
Пусть даны два целых числа (обозначим их A и B) и требуется найти и вывести их сумму.
Программа для решения этой задачи будет выглядеть так:
<?php $fi = fopen('php://stdin', 'r'); $a = fgets($fi)*1; $b = fgets($fi)*1; $summa = $a + $b; printf("%d", $summa); ?>
Комментарии по данной программе:
- В условии задачи требуется вывести только сумму чисел, поэтому никаких текстовых сообщений, вроде "Искомая сумма равна" и т.п. быть не должно. Программа должна выводить ровно то, что от нее требуется по условию: не больше и не меньше.
- Обратите внимание, что для большинства задач реализован как ввод данных из файла input.txt, так и из стандартного потока ввода (stdin). Это же верно и для вывода в файл output.txt и стандартного потока stdout. Так что в данной задаче вместо stdin можно было бы поставить input.txt.
Как сдавать программы на Python
Пример
Пусть даны два целых числа (обозначим их A и B) и требуется найти и вывести их сумму.
Программа для решения этой задачи будет выглядеть так:
Комментарии по данной программе:
В условии задачи требуется вывести только сумму чисел, поэтому никаких текстовых сообщений, вроде "Искомая сумма равна" и т.п. быть не должно. Программа должна выводить ровно то, что от нее требуется по условию: не больше и не меньше.
В зависимости от особенностей языка программирования, на котором вы работаете, можно использовать два способа ввода и два способа вывода данных. С точки зрения тестирующей системы, используемой на этом сайте, эти способы равнозначны.
Ввод данных можно делать либо с клавиатуры, либо из файла (текстового) с именем input.txt. Файл считается расположенным в рабочей папке программы, поэтому никаких специальных путей к нему указывать не нужно.
Вывод данных можно делать либо на экран, либо в текстовый файл с именем output.txt. Файл должен располагаться в рабочей папке программы, поэтому никаких специальных путей к нему указывать не нужно. В случае, если вы указали какой-то путь к этому файлу или ошиблись в его названии, возможно возникновение ошибки при работе программы (недостаточно прав для создания файла).
Общие правила о данных
Составители тестов гарантируют, что все тесты точно соответствуют условиям задач и по количеству данных и по формату их представления.
Это означает, например, что если в условии сказано, что вводится одно натуральное число, не превышающее 1000, это значит, что вашу программу будут тестировать только в таких условиях (ей не будут вводить отрицательные, дробные или слишком большие числа). В самой программе проверять корректность исходных данных не нужно.
Вывод данных следует делать точно так, как написано в условии, чтобы тестирующая система могла сравнить эталонные ответы с теми, которая выдаст ваша программа.
Например, если по условию требуется вывести слово yes (маленькими буквами), а на следующей строке число, то не следует выводить число слитно со словом. В случае, если программа выводит не то, что требуется по условию задачи в протоколе это отражается сообщением "Неверный формат вывода".
Для того, чтобы считывать данные из консоли применяется класс Scanner. Для того, чтобы применять данный класс необходимо подключить import java.util.Scanner;
Операция чтения будет зависеть от типа данных, которые вы собираетесь ввести.
import java.util.Scanner; public class test { public static void main(String[] args) { Scanner in = new Scanner(System.in); int a = in.nextInt(); // целое число byte b = in.nextByte(); // байтовое число String c = in.nextLine(); // одна строка целиком double d = in.nextDouble();// вещественное число long e = in.nextLong(); // длинное целое число short f = in.nextShort(); // короткое целое число String s = in.next(); // строка до первого пробела } }
Для вывода данных используется объект System.out и его методы print() и println().
Например.
А может ли быть такое, что тесты неправильные?
Тесты тоже пишут люди, и они могут ошибаться. Возможно (теоретически), что какой-то тест к задаче, которую вы решаете содержит ошибку. В этом случае, рекомендуем сначала воспользоваться ссылкой "Результаты" и посмотреть, много ли людей до вас успешно сдало решение. Если таких людей много, то скорее всего, ваше решение в определенных случаях работает некорректно.
Тем не менее, вы можете обратиться к администраторам сайта через форму обратной связи. Мы будем очень благодарны за возможность улучшить качество наших учебных материалов.
А можно ли получить один или несколько тестов к определенной задаче?
Нельзя. Способность отлаживать программу также входит в перечень необходимых умений. Старайтесь развивать и ее тоже.
Что означает сообщение "Отправка бинарного файла"?
Если после отправки файла в на проверку вы получили такое сообщение, это значит, что вместо исходного текста программы вы послали исполняемый код. В этом случае посылка будет проигнорирована, в список ваших посылок никакая информация добавлена не будет.