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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.10.2013, 21:18   #1
d0gma
 
Регистрация: 30.10.2013
Сообщений: 4
По умолчанию Дана точка А (х, у). Определить, принадлежит ли она треугольнику с вершинами в точках (x1, y1), (x2, y2), (x3, y3) (Pascal)

Много занимаюсь спортом, не могу решить задачу по паскалю, помогите пожалуйста

Дана точка А (х, у). Определить, принадлежит ли она треугольнику с вершинами в точках (x1, y1), (x2, y2), (x3, y3).
d0gma вне форума Ответить с цитированием
Старый 30.10.2013, 21:39   #2
McFrey
Форумчанин
 
Аватар для McFrey
 
Регистрация: 15.10.2011
Сообщений: 306
По умолчанию

Код:
var x1,x2,x3,x, y1,y2,y3,y, A,B,S:integer;
begin
  read(x1,x2,x3,y1,y2,y3,x,y);
  S:=(x1-x3)*(y2-y3)-(x2-x3)*(y1-y3);
  if S=0 then writeln('Треугольник не существует...')
  else
  begin
    A:=(x-x3)*(y2-y3)-(x2-x3)*(y-y3);
    B:=(x1-x3)*(y-y3)-(x-x3)*(y1-y3);
    if (S<0) and (S<=A) and (A<=0) and (S<=B) and (B<=0) or
       (S>0) and (S>=A) and (A>=0) and (S>=B) and (B>=0) then
       writeln('Да')
    else
       writeln('Нет')
  end
end.
Если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое...
McFrey вне форума Ответить с цитированием
Старый 31.10.2013, 05:28   #3
SaLoKiN
Форумчанин
 
Аватар для SaLoKiN
 
Регистрация: 19.09.2013
Сообщений: 597
По умолчанию

ну вот блин написал,а потом присмотрелся к вводу. и увидел что сначала вводятся х1,х2,х3 потом у1,у2,у3 и потом Х и У.
Сделал сам, помоги другому!
Что-то работает не так? Дебаггер в помощь!!!

Последний раз редактировалось SaLoKiN; 31.10.2013 в 05:31.
SaLoKiN вне форума Ответить с цитированием
Старый 31.10.2013, 09:26   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

McFrey, попытался распознать ваш алгоритм (выбирая среди этих)
вижу только, что коэффиценты наклона линий вычисляете и сравниваете...

долго вводил разные значения. в 99% случаев всё работало как надо. Но интуиция меня не обманула.. Алгоритм оказался не без бага.
Попробуйте ввести координаты точек треугольника (7,3),(3,-4),(-3,1) и координаты красной точки (5, -3) (иммено в такой последовательности: 7 3 -3 3 -4 1 5 -3.
Ваша программа говорит, что точка принадлежит треугольнику. А, как мы видим, это не так.
треугольник.gif
Serge_Bliznykov вне форума Ответить с цитированием
Старый 31.10.2013, 09:33   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

offtop
Цитата:
Много занимаюсь спортом, не могу решить задачу по паскалю
Дык и учиться нужно в учебное заведение с уклоном в физкультуру, а не в паскаль
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 31.10.2013, 09:42   #6
SaLoKiN
Форумчанин
 
Аватар для SaLoKiN
 
Регистрация: 19.09.2013
Сообщений: 597
По умолчанию

7 -3 3 3 1 -4 5 -3

(7,3),
(-3,1)
(3,-4)
а вот так работает)


Serge_Bliznykov а если так допилить?
Код:
var x1,x2,x3,x, y1,y2,y3,y, A,B,C,S:integer;
begin
  read(x1,x2,x3,y1,y2,y3,x,y);
  S:=(x1-x3)*(y2-y3)-(x2-x3)*(y1-y3);
  if S=0 then writeln('Треугольник не существует...')
  else
  begin
    A:=(x-x3)*(y2-y3)-(x2-x3)*(y-y3);
    B:=(x1-x3)*(y-y3)-(x-x3)*(y1-y3);
    C:=(x-x2)*(y1-y2)-(x1-x2)*(y-y2);
    if (S<0) and (S<=A) and (A<=0) and (S<=B) and (B<=0)and (S<=C) and (C<=0) or
       (S>0) and (S>=A) and (A>=0) and (S>=B) and (B>=0) and (S>=C) and (C>=0)then
       writeln('Да')
    else
       writeln('Нет')
  end
end.
Сделал сам, помоги другому!
Что-то работает не так? Дебаггер в помощь!!!

Последний раз редактировалось SaLoKiN; 31.10.2013 в 09:55.
SaLoKiN вне форума Ответить с цитированием
Старый 31.10.2013, 09:44   #7
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,865
По умолчанию

Цитата:
Сообщение от d0gma Посмотреть сообщение
Много занимаюсь спортом, не могу решить задачу по паскалю, помогите пожалуйста
Это в цитатник
Arigato вне форума Ответить с цитированием
Старый 31.10.2013, 09:56   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

http://www.rsdn.ru/forum/alg/67622.flat#67622
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 31.10.2013, 10:07   #9
SaLoKiN
Форумчанин
 
Аватар для SaLoKiN
 
Регистрация: 19.09.2013
Сообщений: 597
По умолчанию

Аватар Если я правильно понял, то это метод относительности?
Сделал сам, помоги другому!
Что-то работает не так? Дебаггер в помощь!!!
SaLoKiN вне форума Ответить с цитированием
Старый 31.10.2013, 10:34   #10
d0gma
 
Регистрация: 30.10.2013
Сообщений: 4
По умолчанию

Спасибо пацаны, не забуду вас!!!
d0gma вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
определить точка принадлежит окружности Karlen1990 Помощь студентам 17 12.07.2012 19:59
Дана точка с координатами X,Y определить, попадает ли она в область плоскости rager06 Паскаль, Turbo Pascal, PascalABC.NET 4 01.06.2011 17:29
Принадлежит ли точка треугольнику? Delphi kazzz Помощь студентам 4 16.11.2010 18:54
С#. принадлежит ли точка треугольнику pro100saniok Общие вопросы .NET 7 21.06.2010 14:16