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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.10.2016, 12:08   #1
Nathaniel Green
 
Регистрация: 25.10.2016
Сообщений: 4
По умолчанию Работа с функциями (Delphi)

Даны координаты трех точек, как определить попарно(точки 1 и 2, 2 и 3, 1 и 3), лежат ли они в одном квадранте? Это надо сделать с помощью функции.
Nathaniel Green вне форума Ответить с цитированием
Старый 25.10.2016, 12:21   #2
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

1) Что такое "квадрант"?
2) Что ты уже успел сделать? (Хоть что-нибудь есть?)
ura_111 вне форума Ответить с цитированием
Старый 25.10.2016, 12:31   #3
Nathaniel Green
 
Регистрация: 25.10.2016
Сообщений: 4
По умолчанию

Цитата:
Сообщение от ura_111 Посмотреть сообщение
1) Что такое "квадрант"?
2) Что ты уже успел сделать? (Хоть что-нибудь есть?)
1) Квадрант плоскости — любая из 4 областей (углов), на которые плоскость делится двумя взаимно перпендикулярными прямыми, принятыми в качестве осей координат. Проще говоря надо определить лежат ли попарно точки в одной из четвертей координатной плоскости XY.

2)
Код:
function P(a,b,c,d:real):string;
begin
if ((a>0) and (b>0) and (c>0) and (d>0)) or ((a<0) and (b>0) and (c<0) and (d>0))
or ((a<0) and (b<0) and (c<0) and (d<0)) or ((a>0) and (b<0) and (c>0) and (d<0))
then begin
p:=' Лежат в одном квадранте';
end else
p:=' Лежат в разных квадрантах';
end;
Проблема в том, что он всегда выводит на else

Последний раз редактировалось Nathaniel Green; 25.10.2016 в 12:35.
Nathaniel Green вне форума Ответить с цитированием
Старый 25.10.2016, 12:52   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
if (Sign(x1)=Sign(x2)) and (Sign(y1)=Sign(y2)) then в одном квадранте
Что делать с точками лежащими на координатных осях? Каждая из них в двух квадрантах, а 0,0 так в четырех
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 25.10.2016 в 12:54.
Аватар вне форума Ответить с цитированием
Старый 25.10.2016, 12:56   #5
Nathaniel Green
 
Регистрация: 25.10.2016
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Код:
if (Sign(x1)=Sign(x2)) and (Sign(y1)=Sign(y2)) then в одном квадранте
Что делать с точками лежащими на координатных осях? Каждая из них в двух квадрантах, а 0,0 так в четырех
в задании про это ничего не сказано, а так, то пока без идей
Nathaniel Green вне форума Ответить с цитированием
Старый 25.10.2016, 13:09   #6
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Посмотри на код; ты понимаешь идею?

10.jpg

Последний раз редактировалось ura_111; 25.10.2016 в 13:13.
ura_111 вне форума Ответить с цитированием
Старый 25.10.2016, 13:33   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

проще. при умножении положительное число получается только в случае одинаковости знаков у множителей.
поэтому достаточно просто:
Код:
if (x1*x2>0) and (y1*y2>0) then в одном квадранте
else не в одном
или, в виде функции
Код:
function isSameQuarter(x1,y1, x2,y2 : integer) : boolean;
begin
  Result := (x1*x2>0) and (y1*y2>0)
end;

Последний раз редактировалось Serge_Bliznykov; 25.10.2016 в 13:35.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.10.2016, 13:50   #8
Nathaniel Green
 
Регистрация: 25.10.2016
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
проще. при умножении положительное число получается только в случае одинаковости знаков у множителей.
поэтому достаточно просто:
Код:
if (x1*x2>0) and (y1*y2>0) then в одном квадранте
else не в одном
или, в виде функции
Код:
function isSameQuarter(x1,y1, x2,y2 : integer) : boolean;
begin
  Result := (x1*x2>0) and (y1*y2>0)
end;
Спасибо, воспользуюсь вашей идеей!
Nathaniel Green вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа с функциями. Delphi Allllex Помощь студентам 3 27.11.2015 19:19
Работа с функциями .Lexx. C# (си шарп) 18 17.07.2015 10:35
работа с функциями в C# Анастасия666 C# (си шарп) 3 16.11.2013 18:48
Работа с функциями !) vladtum Общие вопросы C/C++ 0 28.11.2010 17:25
Работа с функциями(С++) Scarletred Помощь студентам 5 06.04.2010 13:29