В
Все
М
Математика
О
ОБЖ
У
Українська мова
Д
Другие предметы
Х
Химия
М
Музыка
Н
Немецкий язык
Б
Беларуская мова
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
Р
Русский язык
У
Українська література
Ф
Французский язык
П
Психология
А
Алгебра
О
Обществознание
М
МХК
В
Видео-ответы
Г
География
П
Право
Г
Геометрия
А
Английский язык
И
Информатика
Қ
Қазақ тiлi
Л
Литература
И
История
polinapiterskog
polinapiterskog
14.03.2023 18:29 •  Информатика

Укажите все клетки шахматного поля, находящиеся под боем коня, заданного координатами на шахматном поле. в паскаль

Показать ответ
Ответ:
TipsSpeed
TipsSpeed
03.08.2020 14:16
// PascalABC.NET 3.2, сборка 1437 от 03.05.2017
// Внимание! Если программа не работает, обновите версию!

type
  tField=(char,integer);

function GetNewField(oldfld:tField;x,y:integer;var newfld:tField):boolean;
begin
  Result:=true;
  var xo:=oldfld[0];
  case xo.ToLower of
  'a':
    case x of
    -2,-1:Result:=false;
    1:newfld:=(Succ(xo),0);
    2:newfld:=(Succ(Succ(xo)),0)
    end;
  'b':
    case x of
    -2:Result:=false;
    -1:newfld:=(Pred(xo),0);
    1:newfld:=(Succ(xo),0);
    2:newfld:=(Succ(Succ(xo)),0)
    end;
  'g':
    case x of
    -2:newfld:=(Pred(Pred(xo)),0);
    -1:newfld:=(Pred(xo),0);
    1:newfld:=(Succ(xo),0);
    2:Result:=false
    end;
  'h':
    case x of
    -2:newfld:=(Pred(Pred(xo)),0);
    -1:newfld:=(Pred(xo),0);
    1,2:Result:=false
    end;
  else
    case x of
    -2:newfld:=(Pred(Pred(xo)),0);
    -1:newfld:=(Pred(xo),0);
    1:newfld:=(Succ(xo),0);
    2:newfld:=(Succ(Succ(xo)),0)
    end
  end;
  if Result=true then begin
    var yo:=oldfld[1];
    case yo of
    1:
      case y of
      -2,-1:Result:=false;
      else newfld:=(newfld[0],yo+y);
      end;
    2:
      case y of
      -2:Result:=false;
      else newfld:=(newfld[0],yo+y);
      end;
    7:
      case y of
      -2,-1,1:newfld:=(newfld[0],yo+y);
      2:Result:=false
      end;
    8:
      case y of
      -2,-1:newfld:=(newfld[0],yo+y);
      1,2:Result:=false
      end
    else
      newfld:=(newfld[0],yo+y);
    end
  end
end;

begin
  var ax:=Arr(-2,-1,1,2);
  var ay:=ax;
  var s:=ReadlnString('Укажите клетку, на которой стоит конь');
  var f1,f2:tField;
  f1:=(s[1],s[2].ToDigit);
  foreach var x in ax do
    foreach var y in ay do
      if abs(x)+abs(y)=3 then
        if GetNewField(f1,x,y,f2) then Print(f2[0]+f2[1]);
  Writeln
end.

Примеры
Укажите клетку, на которой стоит конь b1
a3 c3 d2

Укажите клетку, на которой стоит конь C5
A4 A6 B3 B7 D3 D7 E4 E6

Укажите все клетки шахматного поля, находящиеся под боем коня, заданного координатами на шахматном п
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота