О языках программирования в тестирующей системе

Решения участников компилируются и запускаются под управлением операционной системы 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 возможен только файловый ввод-вывод.

Особенности некоторых языков программирования

dcc - Delphi

Названия используемых модулей должны быть записаны с учетом регистра.

Правильное написание:

uses Math;

uses SysUtils;

Написания math и sysutils - неверные.

fpc - Free Pascal

Нельзя использовать модуль crt.

C и C++

Функция main должна возвращать значение типа int. Правильно: int main(). Неправильно: void main(). Значение, возвращаемое функцией main всегда должно быть равно 0.

gcc, g++ - GNU C/C++

По умолчанию в тестирующей системе не подключается ни один заголовочный файл, таким образом, обязательно необходима директива

#include <stdio.h>

в программе на C или

#include <iostream>

в программе на C++.

Системно-зависимые особенности ввода-вывода

При считывании текстов следует учитывать, что в разных операционных системах концы строк в текстовых файлах кодируются по-разному. А именно:

В системе Linux конец строки кодируется одним байтом с кодом 0A (шестнадцатеричным).

В системах Windows и DOS концы строк кодируются двумя байтами с кодами 0D 0A (шестнадцатеричными).

Это необходимо иметь в виду при разработке программы. Лучше всего при считывании данных использовать функции языка программирования, которые целиком считывают строки, автоматически определяя концы строк, независимо от используемой операционной системы.

В тестирующей системе программы запускаются в английской локали (точнее, с установленной стандартной локалью POSIX), между тем у участников на компьютере в операционной системе может использоваться русская локаль. Это может повлиять на функции ввода-вывода, использующие параметры системной локали.