Работа с тестирующей системой, расшифровка сообщений. "Задача 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.
Delphi XE2