Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.11.2014, 19:10   #1
Philipp93
 
Регистрация: 29.10.2014
Сообщений: 6
По умолчанию Простенькая задачка

Стандартным прямоугольником на плоскости называется прямоугольник со сторонами, параллельными осям координат. Такой прямоугольник однозначно задаётся парой противоположных
вершин.

Пусть первый прямоугольник задан парой точек (-5;20) и (-20;0)
а второй – парой (-5;10) и (-35;10)
Напишите пожалуйста программу, которая для заданных прямоугольников определит, принадлежит ли вводимая точка хотя бы одному из прямоугольников, но не обоим одновременно.

Программа должна печатать true в случае положительного ответа и false в противном случае.

Последний раз редактировалось Philipp93; 10.11.2014 в 19:12.
Philipp93 вне форума Ответить с цитированием
Старый 10.11.2014, 19:50   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Кажется примерно так:
Код:
program Project1;

function perf(ax,ay,bx,bx,x,y:double):Boolean;
begin
  result:=
   (x>=ax) and (x<=bx) and
   (y>=ay) and (y<=by)
  ;
end;

var x,y:double;
begin
  x:=0; y:=0;
  if perf(-5,20,-20,0,x,y) xor perf(-5,10,-35,10,x,y) then  write('Да')
  else write('Нет');
  reaadln;
end.
Но могу ошибаться - не проверял.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.11.2014, 20:26   #3
Philipp93
 
Регистрация: 29.10.2014
Сообщений: 6
По умолчанию

К сожаленью на выход автоматически выходит Нет. Где-то недоработка
Philipp93 вне форума Ответить с цитированием
Старый 10.11.2014, 21:49   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Бывает )
Пройдись отладкой и посмотри где я допустил неточность.
Скорее всего в xor.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.11.2014, 21:52   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

я бы рекомендовал такой код:
Код:
program Project1;

function perf(ax,ay,bx,by,x,y:double):Boolean;
begin
  result := true;
  if ax<bx then
    result:= result and (x>=ax) and (x<=bx)
  else
    result:= result and (x>=bx) and (x<=ax);
  if ay<by then
    result:= result and (y>=ay) and (y<=by)
  else
    result:= result and (y>=by) and (y<=ay);
end;

var x,y:double;
 pr1, pr2 : boolean;
begin
  x:=-5; y:=2;
  pr1 := perf(-5,20,-20,0,x,y);
  pr2 := perf(-5,10,-35,10,x,y);
  Write('Первому прямоугольнику точка ',x,' ',y);
  if pr1 then WriteLn(' принадлежит') else WriteLn(' не принадлежит');
  Write('Второму прямоугольнику точка ',x,' ',y);
  if pr2 then WriteLn(' принадлежит') else WriteLn(' не принадлежит');
  Write('Ответ на задачу: ');
  if pr1 xor pr2  then  writeln('Да')
  else writeln('Нет');
{  readln;}
end.
ну и ещё. рекомендую взять листик, набросать на нём координаты прямоугольников.
Убедиться, что точка 0,0 не принадлежит ни одному из прямоугольников.
Попробовать взять другую точку, например, (-5, 2)


Код:
а второй – парой (-5;10) и (-35;10)
кстати, прямоугольник, у которого верхняя вершина расположена в 10, нижняя расположена в 10 очень невысокий

Последний раз редактировалось Serge_Bliznykov; 10.11.2014 в 21:55.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Простенькая задачка))) LegionuS C++ Builder 2 01.04.2014 11:23
Простенькая БД ДмитрийЙ Помощь студентам 1 17.02.2013 12:25
Простенькая задачка Pavelhr Паскаль, Turbo Pascal, PascalABC.NET 2 11.11.2008 00:05