М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
Ariunkh
Ariunkh
25.02.2020 08:01 •  Информатика

Задача The king and the knight Напомним прежде всего некоторые шахматные правила, которые понадобятся для решения задачи.

Король (king) за один ход может перейти из той клетки шахматной доски, в которой он находится, в любую соседнюю по вертикали, горизонтали или диагоналям. Естественно, он не может при этом выйти за пределы доски.

Конь (knight) может пойти на любое поле доски, если оно располагается на другом конце русской буквы Г (то есть вначале конь перемещается на два поля по горизонтали или по вертикали, а затем на одну клетку перпендикулярно первоначальному направлению). Выходить за границы доски также нельзя.

Будем говорить, что фигура A находится под боем фигуры B, если фигура B за один ход может переместиться в клетку, в которой находится фигура A.

А теперь — задача… В различных клетках шахматной доски находятся две фигуры: король и конь. Вам требуется выяснить истинность или ложность каждого из четырёх утверждений:

король находится под боем коня;
король не находится под боем коня, но будет находиться под боем после одного допустимого хода коня;
конь находится под боем короля;
конь не находится под боем короля, но будет находиться под боем после одного допустимого хода короля
Сможете решить эту задачу?
Формат входных данных
В первой строке файла записывается положение короля в стандартной шахматной нотации (согласно этой нотации, строки обозначаются снизу вверх латинскими буквами от a до h, а столбцы слева направо цифрами от 1 до 8, так что нижняя левая клетка обозначается как a1, а верхняя правая — h8). Во второй строке аналогичным образом записывается положение коня.
Формат выходных данных
Выведите строку из четырёх символов, каждый из которых принимает значение «Y» или «N» в зависимости от того, истинно или ложно очередное утверждение.

👇
Открыть все ответы
Ответ:
abobov1234
abobov1234
25.02.2020
Const nx=30;mx=30;
var i,j,n,m:integer;A:array[1..nx,1..mx] of integer;B,D:array[1..nx] of integer;
begin 
write('Введите n');Readln(n);
write('Введите m');Readln(m);
for i:=1 to n do begin
for j:=1 to m do вegin
A[i,j]:=random(100)-20;
write(A[i,j]:4);end;writeln;end;writeln;
for i:=1 to n do begin
for j:=1 to m do begin
if (A[i,j] mod 3 =0) then begin
B[i]:= B[i] + A[i,j];write(A[i,j]:4);D[i]:= D[i] + 1;end;end;writeln;end;
for i:=1 to n do begin
if (B[i]=0) and (D[i]= 0) then B[i]:= -10;
write(B[i]:4);end;end.
4,7(39 оценок)
Ответ:
Type
  Point=record
    x,y:real
    end;

procedure GetPoint(c:char; var A:Point);
  var
    x,y:real;
begin
  Write('Введите координаты x и y точки ',c,': ');
  Read(x,y);
  A.x:=x; A.y:=y
end;

function DistPoint(A,B:Point):real;
begin
  DistPoint:=sqrt(sqr(B.x-A.x)+sqr(B.y-A.y))
end;

var
  A,B,M:Point;
  d,p,ab,ma,mb:real;
begin
  GetPoint('A',A); GetPoint('B',B); GetPoint('M',M);
  ab:=DistPoint(A,B); ma:=DistPoint(M,A); mb:=DistPoint(M,B);
  if ma>=ab+mb then d:=mb
  else
    if mb>=ma+ab then d:=ma
    else begin
      p:=(ma+mb+ab)/2;
      d:=2*sqrt(p*(p-ab)*(p-ma)*(p-mb))/ab
    end;
  Writeln('Минимальное расстояние составляет ',d)
end.

Тестовое решение:
Введите координаты x и y точки A: -3 -5
Введите координаты x и y точки B: 2 5
Введите координаты x и y точки M: -3 4
Минимальное расстояние составляет 4.02492235949962
4,5(50 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ