АВТ
Язык:

Дистанционный практикум по программированию

Задачи Online статус Соревнования
Новости Справка СДО
 
Здравствуйте, Гость! Войдите с паролем или зарегистрируйтесь.

Часто задаваемые вопросы (FAQ)

Объявление. Доступ к сайту может временно не работать из последних версий браузера Chrome. Варианты решения проблемы:
1. Использовать браузер Mozilla Firefox
2. В строке адреса браузера Chrome ввести адрес "chrome://flags" и установить в Disabled (Выключено) флаги "HTTPS Upgrades" и "HTTPS-First Mode V2 For Engaged Sites".

Вопрос:

Что представляет собой система, для чего она предназначена?

Ответ:
Смотрите здесь
Вопрос:

Как вводить данные и выводить ответ?

Ответ:
Ваша програма должна считывать входные данные со стандартного потока ввода (с консоли) и выводить результаты в стандартный поток вывода (на консоль). Примечание: в условиях некоторых задач, взятых со старых олимпиад, может говориться о входных и выходных файлах. Тем не менее, ввод и вывод должен выполняться только через через стандартные потоки.
Ваша программа не должна выводить ничего лишнего, наподобие подсказок "введите число" или "ответ равен". Не используйте модуль crt в Pascal.

Пример программы на Pascal для решения задачи №1 "A+B":
var
   i, j: integer;
begin
   Read(i, j);
   Writeln(i + j)
end.

Пример аналогичной программы на C++:
#include <iostream>
using namespace std;
int main(){
   int a, b;
   cin >> a >> b;
   cout << a + b;
}

Примеры для других языков смотрите ниже.
Вопрос:

Каковы командные строки компиляции и запуска решений на сервере?

Ответ:
Смотрите здесь
Вопрос:

В процессе отладки входные данные часто удобнее считывать из файла. Как это делать?

Ответ для некоторых языков:
На Pascal в начале программы достаточно написать строчку:
assign(input, 'input.txt'); reset(input);
В результате при вводе данные будут читаться не с консоли, а с файла 'input.txt'. При отправке решения строчку нужно закомментировать.
На C++ в начале функции main достаточно написать:
freopen("input.txt", "r", stdin);
и в начале программы подключить соответствующий заголовок: #include <cstdio>
Вопрос:

Что означает сообщение "Security Violation (Нарушение безопасности)"?

Ответ:
Проверяющая система отслеживает вызовы из вашей программы функций операционной системы, и в случае вызова запрещенной функции (работа с файлами, сокетами и т.п.) прерывает выполнение программы и выдаёт соответствующее сообщение.
Примечание: в текущей версии системы иногда возможна выдача такого сообщения, когда программа аварийно завершается, и на самом деле должно быть "Runtime error (Ошибка выполнения)".

Вопрос:

Что означает сообщение "Presentation Error (Ошибка представления)"?

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

Что делать, если в программе большая глубина рекурсивных вызовов, и программа аварийно завершается из-за переполнения стека?

Ответ для некоторых языков:
Для увеличения размера стека во FreePascal и Delphi можно поставить, например, такую строчку в начало программы: {$M 67108864} - тем самым размер стека будет равен 64 мегабайт.
Для Visual C++ можно вставить в программу директиву #pragma comment(linker, "/STACK:67108864")
Для GNU C++ и Java размер стека уже настроен в системе и составляет не менее 64 мегабайт.
Для языка Python можно написать следующий код:
import sys
import threading

def main():
    # здесь пишется код вашего решения

if __name__ == "__main__":
    sys.setrecursionlimit(300000)
    threading.stack_size(64 * 1024 * 1024)
    threading.Thread(target=main).start()

Вопрос:

Как на своём компьютере оценить, сколько времени и памяти занимает программа?

Ответ:
Можно воспользоваться программой runexe. Ещё один вариант - программа Run. Также можно воспользоваться программой Тестер (но она умеет запускать только 32-битный код).

Вопрос:

Как правильно считывать входные данные, если неизвестно заранее их количество?

Ответ для некоторых языков:
 PascalC++
Считывание целых чисел:
var
  x: integer;
...
while not seekeof do
begin
  read(x);
  ...
end;
int x;
while (cin>>x) {
  ...
}




Считывание символов
var 
  c: char;
...
while not eof do
begin
   read(с);
  ...
end;
char c;
while (cin.get(c))
{
   ...
}



Считывание строк
var line: string;
...
while not eof do
begin
   readln(line);
   ...
end;
char line[1000];
while (cin.getline(line,1000))
{
 ...
}



Вопрос:

Как писать и отправлять задачи на Java?

Ответ:
Смотрите здесь
Вопрос:

Как писать и отправлять задачи на Free Basic?

Ответ:
Смотрите здесь
Вопрос:

Как писать и отправлять задачи на Perl?

Ответ:
Смотрите здесь
Вопрос:

Как писать и отправлять задачи на Lua?

Ответ:
Смотрите здесь
Вопрос:

Как писать и отправлять задачи на Visual Basic?

Ответ:
Смотрите здесь
Вопрос:

Как писать и отправлять задачи на Visual C#?

Ответ:
Смотрите здесь
Вопрос:

Как писать и отправлять задачи на Python?

Ответ:
Смотрите здесь
Вопрос:

Как писать и отправлять задачи на ассемблере?

Ответ:
Смотрите здесь
Вопрос:

Как писать и отправлять задачи на CScript (WSH) JScript?

Ответ:
Пример решения задачи "A+B":
var a = WScript.StdIn.readLine().split(' ');
WScript.Echo(parseInt(a[0]) + parseInt(a[1]));

Вопрос:

Как писать и отправлять задачи на CScript (WSH) VBScript?

Ответ:
Пример решения задачи "A+B":
a = Split(WScript.StdIn.readLine)
WScript.Echo(CLng(a(0)) + CLng(a(1)))

Вопрос:

Как отправлять задачи на Node.js?

Ответ:
Пример решения задачи "A+B":
const readline = require('readline').createInterface({
  input: process.stdin,
  output: process.stdout
});

readline.on('line', line => {
  let [a, b] = line.split(" ").map(x => parseInt(x));
  console.log(a + b);
  readline.close();
});

Пример альтернативного решения в одну строку:
console.log(require('fs').readFileSync(0, 'binary').trim().split(/\s+/).map(Number).reduce((a, b) => a + b, 0));

Вопрос:

Как писать и отправлять задачи на Octave?

Ответ:
Смотрите здесь
Вопрос:

Как отправлять задачи на SQL?

Ответ:
Язык SQL не является универсальным языком, он используется только для решения задач раздела Учебные курсы / Базы данных. При отправке SQL-запросов следует придерживаться следующих правил:
1. Точка с запятой в конце предложения не ставится
2. Всем вычисляемым полям необходимо явно давать имена длиной до 30 символов, например, так:
select min(price) as minpr from km_prices

Вопрос:

Как отправлять задачи на Go (golang)?

Ответ:
Пример решения задачи "A+B":
package main

import "fmt"

func main() {
    var a, b int
    fmt.Scan(&a, &b)
    fmt.Println(a + b)
}

Вопрос:

Как отправлять задачи на Kotlin?

Ответ:
Пример решения задачи "A+B":
fun main() {
  val (a, b) = readLine()!!.split(' ')
  println(a.toInt() + b.toInt())
}

Вопрос:

Как отправлять задачи на Rust?

Ответ:
Пример решения задачи "A+B":
use std::io;

fn main() {
   let mut line = String::new();
   io::stdin().read_line(&mut line).unwrap();
   let parts: Vec<&str> = line.split_whitespace().collect();
   let a: i32 = parts[0].parse().unwrap();
   let b: i32 = parts[1].parse().unwrap();
   println!("{}", a + b);
}

Вопрос:

Как отправлять задачи на Prolog?

Ответ:
Язык Пролог используется в основном для решения задач раздела Учебные курсы / Логика и теория алгоритмов. Но на нём можно решать и другие задачи.
При запуске вашей программы будет запускаться правило с именем main.
Пример решения задачи A+B:
main :- read(A),
  read(B), 
  S is A + B,
  writeln(S).

Проверка условий на Прологе может выполняться стрелочным оператором ->. Пример программы, определяющей, которое из двух чисел больше:
main :- read(X),
  read(Y),
  (X > Y -> write('First'); 
    (X < Y -> write('Second'); write('Equal'))
  ).


Вопрос:

Почему у меня недоступны подсказки к задачам или нет доступа к учебникам?

Ответ:
Доступ к подсказкам (например, просмотр теста, на котором решение получает "Неверный ответ") зависит от тем, к которым принадлежит задача. Например, для задач с олимпиад подсказки, как правило, выключены.
Доступ к большинству учебников доступен только студентам, имеющим учетную запись в домене кафедры АВТ ВоГУ. Чтобы подтвердить наличие учетной записи в домене, нужно сделать следующее:
1). Войти в проверяющую систему с текущим логином и паролем, щелкнуть по ссылке - своему имени, перейти в "Редактировать профиль" и поменять логин, чтобы он совпадал с именем входа в домен.
2). Заново войти в систему, введя при этом доменный пароль. Если возникает ошибка входа, перезапустить браузер.
Если у вас ещё нет учетной записи в домене, обращайтесь к Андрианову И.А. или Ржеуцкой С.Ю.
Вопрос:

Как правильно оформить условие новой задачи?

Ответ:
Условие задачи оформляется по специальному HTML-шаблону.
Нигде в шаблоне не должно присутствовать название задачи!
HTML-шаблон условия задачи выглядит так:
<!-- Общее описание условия задачи -->
<p>Абзац1</p>
<p>Абзац2</p>
<img src="image001.gif"><br><!--ссылки на картинки должны быть относительными!-->
<p>Абзац3</p>

<!-- Необязательные секции -->
<h3 class="cond_sect">$description$</h3>
<p>Описание</p>
<h3 class="cond_sect">$task$</h3>
<p>Задание</p>
<h3 class="cond_sect">$comments$</h3>
<p>Комментарии</p>
<h3 class="cond_sect">$hint$</h3>
<p>Подсказка</p>
<h3 class="cond_sect">$solution$</h3>
<p>Решение</p>

<!-- Обязательные секции -->
<h3 class="cond_sect">$input$</h3>
<p>Описание входных данных1</p>
<p>Описание входных данных2</p>

<h3 class="cond_sect">$output$</h3>
<p>Описание выходных данных1</p>
<p>Описание выходных данных2</p>

<!-- Пример входных и выходных данных -->
<h3 class="cond_sect">$sample$</h3>
<table class="tbdata" width="500">
   <tr><th width="50%">$input$</th><th width="50%">$output$</th></tr>
   <tr><td valign="top"><pre>Пример 1. Вход:
3 3 2
7 7 1
8 1 1
2 0 1 0</pre>
</td><td valign="top"><pre>Пример 1. Выход:
1 2 1 3
2 1 2 1 2 1 2 1 2 1 ...</pre>
</td></tr></table>

У всех таблиц в условии задачи указывается класс tbdata. Рисунки должны быть в формате gif с прозрачным фоном.

Вставки исходного кода (поддерживается: cpp, delphi, sql, javascript, vbscript, asm, java) оформляются следующим образом:
<table><tr><td><div class="code_box"><pre><code class="cpp">
int main(void)
{
   return 0;
}
</code></pre></div></td></tr></table>


Если вы не нашли ответа на свой вопрос, пишите на avt@vogu35.ru или igand@mail.ru.
 
время генерации 0.047 сек.
© Copyright ВоГУ, АВТ, Носов Д.А., Андрианов И.А.