Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/47: Рейтинг темы: голосов - 47, средняя оценка - 4.68
0 / 0 / 4
Регистрация: 09.04.2016
Сообщений: 128
1

Ошибка Presentation Error в проверяющей системе

04.12.2016, 18:23. Показов 9273. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Краткое условие задачи
По координатам двух клеток шахматной доски, определить какие фигуры могут перейти с первой на вторую клетку.
Если нужны подробности, вот:
Кликните здесь для просмотра всего текста
По заданным координатам двух клеток шахматной доски необходимо определить список шахматных фигур, которые могут перемещаться при игре за «белых» по правилам шахмат из первой координаты во вторую без взятия фигуры соперника.

Напомним, что для игры в шахматы используется доска размером 8х8. При этом горизонтальная координата нумеруется латинскими буквами от «A» до «H», а вертикальная – цифрами от 1 до 8 снизу вверх. Таким образом, координата клетки состоит из буквы и цифры. Например, «H1» и «A8» – правый нижний и левый верхний углы соответственно.

Всего существует 6 шахматных фигур: ладья, слон, конь, ферзь, король и пешка. Опишем правила выполнения хода без взятия на свободной доске:

король ходит на расстояние 1 по вертикали, горизонтали или диагонали;
ферзь ходит на любое расстояние по вертикали, горизонтали или диагонали;
ладья ходит на любое расстояние по вертикали или горизонтали;
слон ходит на любое расстояние по диагонали;
конь ходит буквой «Г», т.е. на поле, находящееся на расстоянии 2 по вертикали и 1 по горизонтали или 1 по вертикали и 2 по горизонтали;
пешка ходит на 1 поле вперед по вертикали, начиная свое движение со второй линии, при первом ходе пешка может перемещаться на 2 поля вперед по вертикали.
Следующие рисунки отражают возможные перемещения шахматных фигур (в скобках указаны англоязычные названия фигур):


Шахматная доска Ладья (Rook) Слон (Bishop)

Конь (Knight) Ферзь (Queen) Король (King) Пешка (Pawn)
Входные данные

В первой строке входного файла INPUT.TXT через пробел записаны начальная и конечная координаты шахматной доски. Каждая координата состоит из заглавной латинской буквы от «A» до «H» и цифры от 1 до 8. Гарантируется, что начальная и конечная координаты не совпадают.

Выходные данные

В выходной файл OUTPUT.TXT выведите по-английски названия шахматных фигур, которые могут совершить свободный ход из первой координаты во вторую по правилам шахмат. Если ни одна из фигур не может выполнить такой ход, то следует вывести «Nobody». Фигуры следует выводить без повторов в произвольном порядке.

Примеры

№ INPUT.TXT OUTPUT.TXT
1 D3 D7 Queen Rook
2 F4 H5 Knight
3 E2 E3 King Queen Rook Pawn
4 A1 H7 Nobody

Тесты из примеров моя программа проходит. Еще проверял на A1 H8 и подобных где ответ Bishop или Pawn
Сделал максимально понятно с функциями для каждой фигуры. В описании ошибок нашел что ошибки типа Presentation Error возникают, если неправильный формат вывода. Не понимаю что у них там в тестах и каким образом может быть неправильный формат вывода. Может ошибка в чём-нибудь не том?
Кликните здесь для просмотра всего текста
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
function Rook(c1,c2:string):boolean;
begin
  if (c1[1]=c2[1]) or (c1[2]=c2[2]) then Rook:=True else Rook:=False;
end;
 
function Bishop(a,b:string):boolean;
begin
  if (abs(ord(a[1])-ord(b[1]))=abs(ord(a[2])-ord(b[2]))) then Bishop:=True else Bishop:=False;
end;
 
function Knight(a,b:string):boolean;
begin
  if ((abs(ord(a[1])-ord(b[1]))=1) and (abs(ord(a[2])-ord(b[2]))=2)) or
  ((abs(ord(a[2])-ord(b[2]))=1) and (abs(ord(a[1])-ord(b[1]))=2)) then  Knight:=True else Knight:=False;
end;
 
function Queen(a,b:string):boolean;
begin
  if Bishop(a,b) or Rook(a,b) then Queen:=True else Queen:=False;
end;
 
function King(a,b:string):boolean;
begin
  if ((abs(ord(a[1])-ord(b[1]))=0) or (abs(ord(a[1])-ord(b[1]))=1)) and
  ((abs(ord(a[2])-ord(b[2]))=0) or (abs(ord(a[2])-ord(b[2]))=1)) then King:=True else King:=False;
end;
 
function Pawn(a,b:string):boolean;
begin
  if a[2]='2' then
  begin
    if (a[1]=b[1]) and (((ord(b[2])-ord(a[2])=1)) or ((ord(b[2])-ord(a[2])=2))) then Pawn:=True else Pawn:=False;
  end
  else if (a[1]=b[1]) and (ord(b[2])-ord(a[2])=1) then Pawn:=True else Pawn:=False;
end;
  var s1,s2:string[2]; input:string;
begin
  readln(input);
  s1:=copy(input,1,2); s2:=copy(input,4,2);
  if Rook(s1,s2) then writeln('Rook');
  if Bishop(s1,s2) then writeln('Bishop');
  if Knight(s1,s2) then writeln('Knight');
  if Queen(s1,s2) then writeln('Queen');
  if King(s1,s2) then writeln('King');
  if Pawn(s1,s2) then writeln('Pawn');
  if not(Rook(s1,s2) or Bishop(s1,s2) or Knight(s1,s2) or Queen(s1,s2) or King(s1,s2) or Pawn(s1,s2)) then writeln('Nobody');
end.
Программа
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.12.2016, 18:23
Ответы с готовыми решениями:

проблема: задача n550 на acmp. НА 6 тесте выдает ошибку с надписью Presentation error - прошу обьяснить
Условие: День программиста отмечается в 255-й день года (при этом 1 января считается нулевым...

Презентация: ошибка "в пространстве имён clr-namespace:LWP09WPF02 не существует имени Presentation"
У меня возникла следующая проблема: существует приложение: код класса presentation.cs : ...

Ошибка при добавлении в файл. Ошибка 101: Ошибка записи на диск (Error 101: Disk write error).
Здравствуйте, возникла проблема такого плана. Нужно произвести добавление записи в файл, но после...

Можно ли получить протокол проверяющей системы?
Добрый день, форумчане. Суть: есть задачки по програмированию, и проверяющая система. когда...

5
Модератор
9956 / 5313 / 3327
Регистрация: 17.08.2012
Сообщений: 16,214
05.12.2016, 20:25 2
Вроде всё хорошо, только вот не надо было бы строку называть input, поскольку input и output - зарезервированные имена для стандартных устройств ввода и вывода, фактически, это имена клавиатуры и дисплея. Вполне возможно, что псевдообучающий сайт, на который Вы сдаёте программу, не переопределяет имена стандартных устройств ввода-вывода, тогда действительно не пойми что получается. Замените input на inp, что ли.

Добавлено через 42 секунды

Не по теме:

Ненавижу эти сайты.

1
0 / 0 / 4
Регистрация: 09.04.2016
Сообщений: 128
05.12.2016, 21:43  [ТС] 3
К сожалению не в этом ошибка, исправил - ничего не вышло.
И кстати он выдает Presentation Error на 6 тесте, поэтому как-то то он прошел с inputом 5 тестов
Самое ужасное то, что нет обсуждения для задачи, поэтому не факт что там адекватные тесты. Но спасибо хоть за такую проверку)
0
Модератор
Эксперт по электронике
8505 / 4360 / 1646
Регистрация: 01.02.2015
Сообщений: 13,530
Записей в блоге: 8
07.12.2016, 00:33 4
Лучший ответ Сообщение было отмечено IlushaMax как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
{$mode fpc}
{$B-}
program acmp_1088;
 
  function TestStepRook(x1, y1, x2, y2: integer): boolean;
  begin
    TestStepRook := (x1 = x2) or (y1 = y2);
    if TestStepRook then
      writeln('Rook');
  end;
 
  function TestStepBishop(x1, y1, x2, y2: integer): boolean;
  begin
    TestStepBishop := abs(x1 - x2) = abs(y1 - y2);
    if TestStepBishop then
      writeln('Bishop');
  end;
 
  function TestStepKnight(x1, y1, x2, y2: integer): boolean;
  begin
    TestStepKnight := abs(x1 - x2) * abs(y1 - y2) = 2;
    if TestStepKnight then
      writeln('Knight');
  end;
 
  function TestStepQueen(x1, y1, x2, y2: integer): boolean;
  begin
    TestStepQueen := (x1 = x2) or (y1 = y2) or (abs(x1 - x2) = abs(y1 - y2));
    if TestStepQueen then
      writeln('Queen');
  end;
 
  function TestStepKing(x1, y1, x2, y2: integer): boolean;
  begin
    TestStepKing := (abs(x1 - x2) <= 1) and (abs(y1 - y2) <= 1);
    if TestStepKing then
      writeln('King');
  end;
 
  function TestStepPawn(x1, y1, x2, y2: integer): boolean;
  begin
    TestStepPawn := (x1 = x2) and ((y2 - y1 = 1) or ((y1 = 2) and (y2 - y1 = 2))) and
      (y1 > 1);
    if TestStepPawn then
      writeln('Pawn');
  end;
 
var
  s: string;
  x1, y1, x2, y2: integer;
  Result: boolean;
begin
  readln(s);
  x1 := Ord(s[1]) - Ord('A') + 1;
  y1 := Ord(s[2]) - Ord('1') + 1;
  x2 := Ord(s[4]) - Ord('A') + 1;
  y2 := Ord(s[5]) - Ord('1') + 1;
  Result := TestStepRook(x1, y1, x2, y2);
  Result := TestStepBishop(x1, y1, x2, y2) or Result;
  Result := TestStepKnight(x1, y1, x2, y2) or Result;
  Result := TestStepQueen(x1, y1, x2, y2) or Result;
  Result := TestStepKing(x1, y1, x2, y2) or Result;
  Result := TestStepPawn(x1, y1, x2, y2) or Result;
  if not Result then
    writeln('Nobody');
end.
0
0 / 0 / 4
Регистрация: 09.04.2016
Сообщений: 128
12.12.2016, 19:42  [ТС] 5
Я так понимаю моя ошибка в том, что надо было перевести координаты в числа?
0
Модератор
Эксперт по электронике
8505 / 4360 / 1646
Регистрация: 01.02.2015
Сообщений: 13,530
Записей в блоге: 8
12.12.2016, 20:08 6
Не обязательно.

Presentation Error:
- Отсутствие выходного файла OUTPUT.TXT
- - Файл не создан, неверное имя файла или сбой программы до открытия выходного файла
0
12.12.2016, 20:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.12.2016, 20:08
Помогаю со студенческими работами здесь

Перегрузка функции, проверяющей корректность даты
Кому не сложно потратить несколько минут своего драгоценного.Помогите пожалуйста с решением данной...

Ошибка в тестовом примере: "Error 1 error C2143: syntax error : missing ';' before 'if'"
#include&lt;iostream&gt; using namespace std; int main(){ int x, a = 0, b = 10; (cin &gt;&gt; x).get(); ...

Ошибка "Error displaying the error page: Application Instantiation Error"
Доброго времени суток. Подскажите пожалуйста кто сталкивался с данной проблемой. У меня завис...

LibreOffice Presentation
Товарищи, вопрос по программе Создания презентаций из пакета libre\open office, вопрос достаточно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru