Работа с тестирующей системой, расшифровка сообщений. "Задача A+B" на разных языках
Тестирующая система TestSys расположена по адресу: ts.lokos.net.
Для входа в систему следует использовать логин (обычно - 2 цифры) и пароль выданные преподавателем.
Задача "A+B" на разных языках программирования
Нужно ввести из входного файла два целых числа и вывести их сумму в выходной файл.
Pascal
const FN = 'aplusb'; { Название входного и выходного файла } var a,b : longint; { Входные данные } begin assign(Input,FN+'.in'); reset(input); assign(Output,FN+'.out'); rewrite(output); read(a,b); { Читаем исходные данные из входного файла } writeln(a+b); { Записываем результат в выходной файл } end.
Delphi
{$APPTYPE CONSOLE} const FN = 'aplusb'; { Название входного и выходного файла } var a,b : Int64; { Входные данные } begin reset(Input,FN+'.in'); rewrite(Output,FN+'.out'); read(a,b); { Читаем исходные данные из входного файла } writeln(a+b); { Записываем результат в выходной файл } end.
C/C++
#include <stdio.h> #define s "aplusb" int main() { freopen(s".in","r",stdin); // Стандартный поток ввода из входного файла freopen(s".out","w",stdout); // Стандартный поток вывода в выходной файл long long a,b; scanf("%lld%lld",&a,&b); printf("%lld",a+b); return 0; }
Сообщения тестирующей системы
- Accepted - Все в порядке! Ваша программа принята! Она откомпилировалась без ошибок и прошла все тесты.
- Presentation Error (PE) - неправильный формат вывода, проверяющая программа не смогла прочитать ваш выходной файл или ваша программа вообще не создала выходной файл.
- Wrong Answer (WA)- неправильный ответ на тест.
- Compile Error (CE) - ошибки компиляции программы. Посмотрите что вы отправляете (нажмите view в отправках).
- Runtime Error (RT) - ошибка времени выполнения (выход за границы массива, переполнение переменной, деление на ноль, корень из отрицательного числа, ошибка в имени входного файла).
- Time Limit (TL) - ваша программа выполнялась на каком-то тесте больше времени по условию задачи.
- Memory Limit (ML) - ваша программа использовала больше памяти, чем разрешено по условию задачи.
Компиляторы
- Pascal: Borland Delphi 7.0, Free Pascal 2.6.0;
- C/C++: Visual C++ 2010 Express Edition, GNU C++ 4.6.1 (MinGW), Code::Blocks 10.05;
- C#: Visual C# 2010 Express Edition;
- Java: Sun JDK 7 update 9, Eclipse 4.2.
- Python: Python 3.3.0, Wing IDE 101 4.1.9.
Примеры ошибок в решениях:
Presentation Error (PE)
Неправильное имя выходного файла:
{$APPTYPE CONSOLE} var A,B : Int64; begin Assign(Input,'aplusb.in'); Reset(Input); Assign(Output,'YA_NE_POMNU.out'); Rewrite(Output); Read(A,B); Write(A+B); end.
Программа выводит на экран вместо файла:
{$APPTYPE CONSOLE} var A,B : Int64; begin Assign(Input,'aplusb.in'); Reset(Input); { Assign(Output,'aplusb.out'); Rewrite(Output); } Read(A,B); Write(A+B); end.
Wrong Answer (WA)
Неверное решение:
{$APPTYPE CONSOLE} var A,B : Int64; begin Assign(Input,'aplusb.in'); Reset(Input); Assign(Output,'aplusb.out'); Rewrite(Output); Read(A,B); Write(A-B); end.
Точности/разрядности типов данных не хватает:
{$APPTYPE CONSOLE} var A,B : Extended; begin Assign(Input,'aplusb.in'); Reset(Input); Assign(Output,'aplusb.out'); Rewrite(Output); Read(A,B); Write((A+B):0:0); end.
Compile Error (CE)
{$APPTYPE CONSOLE} var A,B : Int64; begin ЯВНО НЕВЕРНАЯ СТРОКА!!! Assign(Input,'aplusb.in'); Reset(Input); Assign(Output,'aplusb.out'); Rewrite(Output); Read(A,B); Write(A+B); end.
Комментарий тестирующей системы:
Borland Delphi Version 15.0 Copyright (c) 1983,2002 Borland Software Corporation a.dpr(4) Error: Illegal character in input file: 'Я' ($DF) a.dpr(4) Error: Illegal character in input file: 'А' ($C0) a.dpr(4) Error: Illegal character in input file: '!' ($21) a.dpr(9)
Runtime Error (RE)
Программа завершилась с ненулевым кодом возврата, либо создала исключительную ситуацию (exception) и не обработала ее.
{$APPTYPE CONSOLE} var A,B : Integer; { Integer переполняется на больших числах } begin Assign(Input,'aplusb.in'); Reset(Input); Assign(Output,'aplusb.out'); Rewrite(Output); Read(A,B); Write(A+B); end.
{$APPTYPE CONSOLE} var A,B : Int64; begin Assign(Input,'aplusb.in'); Reset(Input); Assign(Output,'aplusb.out'); Rewrite(Output); Read(A,B); Write(A div B); { Когда B равно 0, тут будет деление на ноль! } end.
Для поиска RE в программе на Delphi используйте директивы:
{$O Off} { Выключаем оптимизацию } {$R+} { Включаем проверку границ массивов } {$Q+} { Включаем проверку переполнений }
Time Limit (TL)
Программа не завершилась за отведенный период времени.
Возможные причины:- Неэффективное решение;
- Ошибка в программе (например, зацикливание).
{$APPTYPE CONSOLE} var A,B : Int64; I,K : Integer; begin Assign(Input,'aplusb.in'); Reset(Input); Assign(Output,'aplusb.out'); Rewrite(Output); Read(A,B); { Цикл выполняется слишком долго!!! } for I:=Low(Integer) to High(Integer) do K := I; Write(A+B); end.
Memory Limit (ML)
Программа попыталась использовать больше памяти, чем разрешается.
{$APPTYPE CONSOLE} var A,B : Int64; T : array [1..100000000] of Integer; { Слишком большой массив!!! } I : Integer; begin Assign(Input,'aplusb.in'); Reset(Input); Assign(Output,'aplusb.out'); Rewrite(Output); for I:=Low(T) to High(T) do T[I]:=2135; Read(A,B); Write(A+B); end.