
Хавст
6 год назад
Pascal abc
Посередине озера плавает плот, имеющий форму прямоугольника. Стороны плота
направлены вдоль параллелей и меридианов. Введём систему координат, в которой ось OX
направлена на восток, а ось ОY – на север. Пусть юго-западный угол плота имеет координаты
(x1, y1), северо-восточный угол – координаты (x2, y2).
Пловец находится в точке с координатами (x, y). Определите, к какой стороне плота
(северной, южной, западной или восточной) или к какому углу плота (северо-западному,
северо-восточному, юго-западному, юго-восточному) пловцу нужно плыть, чтобы как можно
скорее добраться до плота.
Программа получает на вход шесть чисел в следующем порядке: x1, y1 (координаты
юго-западного угла плота), x2, y2 (координаты
северо-восточного угла плота), x, y (координаты
пловца). Все числа целые и по модулю не
превосходят 100. Гарантируется, что x1 < x2, y1 < y2,
x ≠ x1, x ≠ x2, y ≠ y1, y ≠ y2, координаты пловца
находятся вне плота.
Если пловцу следует плыть к северной
стороне плота, программа должна вывести символ
«N», к южной – символ «S», к западной – символ
«W», к восточной – символ «E». Если пловцу
следует плыть к углу плота, нужно вывести одну из
следующих строк: «NW», «NE», «SW», «SE».
Пример входных и выходных данных
Ввод:
-1
-2
5
3
-4
6
Вывод: NW
Решение, правильно работающее для случаев, когда ответом является одна из сторон плота «N», «S», «W», «E»
ОТВЕТЫ

Филарет
Aug 11, 2019
//PascalABC.NET 3.2 сборка 1318
Var x1,y1,x2,y2,x,y,x3,y3,x4,y4:integer;
begin
read(x1,y1,x2,y2,x,y);
x3:=x1;
y3:=y2;
x4:=x2;
y4:=y1;
if (xlt;x1) and (ylt;=y3) and (ygt;=y1) then writeln(W) else
if (xlt;x1) and (ygt;y3) then writeln(NW) else
if (xgt;=x1) and (xlt;=x2) and (ygt;y3) then writeln(N) else
if (xgt;x2) and (ygt;y3) then writeln(NE) else
if (xgt;x2) and (ylt;=y2) and (ygt;=y4) then writeln(E) else
if (xgt;x2) and (ylt;y4) then writeln(SE) else
if (xlt;=x4) and (xgt;=x1) and (ylt;y4) then writeln(S) else
if (xlt;x1) and (ylt;y1) then writeln(SW);
end.
Пример ввода:
-2 1 4 4 -3 5
Пример вывода:
NW
Var x1,y1,x2,y2,x,y,x3,y3,x4,y4:integer;
begin
read(x1,y1,x2,y2,x,y);
x3:=x1;
y3:=y2;
x4:=x2;
y4:=y1;
if (xlt;x1) and (ylt;=y3) and (ygt;=y1) then writeln(W) else
if (xlt;x1) and (ygt;y3) then writeln(NW) else
if (xgt;=x1) and (xlt;=x2) and (ygt;y3) then writeln(N) else
if (xgt;x2) and (ygt;y3) then writeln(NE) else
if (xgt;x2) and (ylt;=y2) and (ygt;=y4) then writeln(E) else
if (xgt;x2) and (ylt;y4) then writeln(SE) else
if (xlt;=x4) and (xgt;=x1) and (ylt;y4) then writeln(S) else
if (xlt;x1) and (ylt;y1) then writeln(SW);
end.
Пример ввода:
-2 1 4 4 -3 5
Пример вывода:
NW
253
Смежные вопросы: