О языках программирования в тестирующей системе
Решения участников компилируются и запускаются под управлением операционной системы Linux на платформе x86 (32 бита).
В данных, подаваемых на вход тестируемым программам, каждая строка завершается одним байтом (код 10), а не двумя байтами (коды 13, 10), как в операционных системах семейства Windows.
Для компиляции и запуска решений на сервере используются следующие компиляторы или интерпретаторы:
Участникам для проверки заданий в тестирующей системе будут доступны следующие языки программирования и компиляторы:
Обозначение |
Компилятор, версия |
Строка компиляции (интерпретации) |
fpc-32 |
Free Pascal 2.6.2 |
fpc PROG |
gcc-32 |
GNU C 4.8.2 |
g++ -m32 -O2 -std=gnu++11 PROG |
g++-32 |
GNU C++ 4.8.2 |
g++ -m32 -O2 -std=gnu++11 PROG |
clang-32 |
CLANG C 3.3 |
clang -m3 -O2 PROG |
clang++-32 |
CLANG C++ 3.3 |
clang++ -m32 -O2 PROG |
dcc |
Borland Delphi 6 (Kylix) 14.5 |
dcc -Q PROG |
python |
Python 2.7.5 |
python PROG |
perl |
Perl 5.16.3 |
perl PROG |
javac |
Oracle JDK 1.7.0_40 |
javac PROG |
ruby |
Ruby 2.0.0p353 |
ruby PROG |
php |
PHP 5.5.8 |
php -nf PROG |
python3 |
Python 3.3.2 |
python3 PROG |
mcs |
Mono C# 2.10.8.0 |
gmcs -optimize+ PROG |
kumir |
Кумир 1.7 |
ckumir PROG |
fbc |
FreeBASIC 0.90.1 (режим совместимости с QuickBasic) |
fbc -lang qb PROG |
fbc-32 |
FreeBASIC 0.90.1 (32-битный режим) |
fbc PROG |
pasabc-linux |
PascalABC.NET 1.8.0.513 |
pabcnetcclear.exe PROG |
Обращаем внимание, что тестирование многих языков программирования (Free Pascal, Delphi, GNU C++) проводится под операционной системой Linux, даже если участник использует операционную систему Windows.
Жюри рекомендует участникам перед сдачей решений проверять работу своих программ, откомпилировав их при помощи указанных в таблице выше команд. Ситуация, когда программа работает по-разному из-за разных ключей компиляции, не является поводом для апелляции. Жюри проверяет программы только скомпилированные указанным выше способом, и не будет проверять решения учащихся, если результат исполнения их программ отличается при другом способе компилирования исходного кода.
Ввод-вывод данных может быть организован как с использованием файлов, так и с использованием стандартного ввода-вывода.
В случае использования файлов программа должна читать данные из файла, имя которого указано в условии задачи и выводить результат работы в другой файл, имя которого также указано в условии задачи.
Другой способ - программа читает входные данные со стандартного ввода (клавиатуры) и выводит результат на стандартный вывод (экран).
По техническим причинам в программах на языке Mono С# и Visual Basic возможен только файловый ввод-вывод.
Особенности некоторых языков программирования
Названия используемых модулей должны быть записаны с учетом регистра.
Правильное написание:
uses Math;
uses SysUtils;
Написания math и sysutils - неверные.
Нельзя использовать модуль crt.
Функция main
должна возвращать значение
типа int
. Правильно: int main()
. Неправильно:
void main()
. Значение, возвращаемое функцией main
всегда
должно быть равно 0.
По умолчанию в тестирующей системе не подключается ни один заголовочный файл, таким образом, обязательно необходима директива
#include <stdio.h>
в программе на C или
#include <iostream>
в программе на C++.
Системно-зависимые особенности ввода-вывода
При считывании текстов следует учитывать, что в разных операционных системах концы строк в текстовых файлах кодируются по-разному. А именно:
В системе Linux конец строки кодируется одним байтом с кодом 0A (шестнадцатеричным).
В системах Windows и DOS концы строк кодируются двумя байтами с кодами 0D 0A (шестнадцатеричными).
Это необходимо иметь в виду при разработке программы. Лучше всего при считывании данных использовать функции языка программирования, которые целиком считывают строки, автоматически определяя концы строк, независимо от используемой операционной системы.
В тестирующей системе программы запускаются в английской локали (точнее, с установленной стандартной локалью POSIX), между тем у участников на компьютере в операционной системе может использоваться русская локаль. Это может повлиять на функции ввода-вывода, использующие параметры системной локали.