Принадлежит ли точка с координатами ( Х,У) области треугольника АВС,...

0 голосов
37 просмотров

Принадлежит ли точка с координатами ( Х,У) области треугольника АВС, где(X1,Y1),(X2,Y2),(X3,Y3) . Нужно написать программу для кубэсика..
Помогите, пожалуйста. мне очень нужно(


Информатика (173 баллов) | 37 просмотров
0

А в координатах надо представить треугольник последовательностью и трех замыкающийся в исходную точку векторов и рассмотреть положение заданной точки относительно каждого вектора, делая обход по контуру треугольника. Например, если обходить по часовой стрелке, то точка принадлежит треугольнику если она будет лежать слева от каждого из векторов. Но вот это условие аналитически для каждого вектора представляется весьма непростой формулой.

0

Нам сказали, чтобы решили на оценку... В общем, я кажется, влипла((

0

Я не знаю, как это со знаниями 9 класса делать. Плюс, в Бейсике надо писать с использованием пользовательских функций.

0

Да-да..

0

я тоже не знаю( а вы не сможете хотя бы попробовать?

0

А зачем пробовать, я-то могу сделать её, но что Вы станете с решением делать? Эта задача предлагалась на олимпиадах по программированию. Вы ведь даже не сможете объяснить происхождение этих диких формул, поскольку не знаете аналитической геометрии.

0

В общем, она нам сказала, что нужно для начала как-то найти площадь по формуле Геррона, но перед этим нужно найти длины сторон по формуле расстояние между двумя точками...

0

Да она просто хочет всех "завалить", предлагая задачу с олимпиады. Можно попробовать так поставить вопрос: поскольку задача не по математике, а по информатике, Вы вправе использовать любые алгоритмы, которые сможете найти. Можно сослаться, что алгоритм найден в Интернет, а программирование выполнено самостоятельно. Других вариантов я не вижу.

0

Так вы мне сможете помочь? хоть как-то? просто у меня тогда одна 4 будет в аттестате( а она мне не нужна((( Да, вы правы. она нас всех валит...

0

Давайте перейдем в Личные Сообщения, иначе мы тут захламим все комментариями

Дан 1 ответ
0 голосов
Правильный ответ
qBASIC:
DECLARE FUNCTION L# (x1#, y1#, x2#, y2#)
DECLARE FUNCTION s3# (x1#, y1#, x2#, y2#, x3#, y3#)
CLS
INPUT "Координаты точки А через запятую: ", ax#, ay#
INPUT "Координаты точки B через запятую: ", bx#, by#
INPUT "Координаты точки C через запятую: ", cx#, cy#
INPUT "Координаты точки m через запятую: ", mx#, my#
s# = s3#(ax#, ay#, bx#, by#, cx#, cy#)
sab# = s3#(ax#, ay#, bx#, by#, mx#, my#)
sbc# = s3#(bx#, by#, cx#, cy#, mx#, my#)
sca# = s3#(cx#, cy#, ax#, ay#, mx#, my#)
eps# = s# - (sab# + sbc# + sca#)
eps% = INT(eps# * 10000) / 10000
IF eps% = 0 THEN PRINT "Внутри" ELSE PRINT "Не внутри"
END

FUNCTION L# (x1#, y1#, x2#, y2#)
   L# = SQR((x2# - x1#) ^ 2 + (y2# - y1#) ^ 2)
END FUNCTION

FUNCTION s3# (x1#, y1#, x2#, y2#, x3#, y3#)
   a# = L#(x1#, y1#, x2#, y2#)
   b# = L#(x2#, y2#, x3#, y3#)
   c# = L#(x3#, y3#, x1#, y1#)
   p# = (a# + b# + c#) / 2
   s3# = SQR(p# * (p# - a#) * (p# - b#) * (p# - c#))
END FUNCTION

Тестовое решение:
Координаты точки А через запятую: 2,1
Координаты точки B через запятую: 15,10
Координаты точки C через запятую: 12,4
Координаты точки m через запятую: 9,5
Внутри

(142k баллов)