![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 08.10.2013
Сообщений: 2
|
![]()
Я в программировании новичок, помогите пожалуйста написать програму на С++:
Даны действительные числа x1, x2, x3, y1, y2, y3. Лежит ли начало координат внутри треугольника с вершинами (x1, y1), (x2, y2), (x3, y3)? Зарание благодарен! |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 19.09.2013
Сообщений: 597
|
![]() Код:
Сделал сам, помоги другому!
Что-то работает не так? Дебаггер в помощь!!! Последний раз редактировалось SaLoKiN; 09.10.2013 в 05:56. |
![]() |
![]() |
![]() |
#3 |
Регистрация: 08.10.2013
Сообщений: 2
|
![]()
SaLoKiN, Безумно благодарен!
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
SaLoKiN, во-первых, в задаче речь идёт о действительных числах.
во-вторых, Вы не учитываете, что не с любыми координатами треугольник может быть построен, а, главеное, в-третьих, не разбирал Ваш код, но практически уверен, что простым сравнением координат с нулём данную задачу не решишь! я бы находил площадь треугольника и площади трёх треугольников, образованных началом координат и вершинами треугольника. Если сумма площадей внутренних треугольников даст площадь исходного треугольника, значит вершина лежит внутри, иначе - нет, не лежит. |
![]() |
![]() |
![]() |
#5 |
Новичок
Джуниор
Регистрация: 09.10.2013
Сообщений: 7
|
![]()
Прежде всего необходимо отсеять те случаи, когда треугольник не может быть построен по данным координатам. Это может быть в нескольких случаях:
1)Две точки из трёх попарно совпадают друг с другом. Этот случай кажется был рассмотрен в вышеприведённой программе. 2)Есть ещё вариант, когда три точки лежат на одной прямой. Тогда треугольник, понятное дело, не получится. Определить можно по-разному, лежат ли эти точки на одной прямой. Тут наверное даже можно прибегнуть к математике и рассмотреть векторы, с началом и концом в этих точках. Если мы сможем доказать, что они коллинеарны, то по определению отрезки с концами в точках будут либо параллельны друг другу, либо лежать на одной прямой, а значит и точки будут лежать на одной прямой ![]() 3)Мне кажется, тут ещё надо учитывать направленность отрезка. Это я написал пока что алгоритм проверки того, что данные три точки действительно образуют треугольник. Чтобы определить, где лежит начало координат, я полагаю, мы должны рассмотреть треугольники, с одной вершиной в начале коорд, а с другими вершинами в двух точках, если площади этих треугольников в сумме составляют площадь данного, то точка лежит внутри треугольника. Программу не написал ещё соответствующую, в ближайшее время вышлю свою версию программы. Удачи ![]() P.S: да, и координаты точек лучше действительно сделать float или double. Дробные значения тоже входят в область действительных чисел ![]() Последний раз редактировалось Tikca; 09.10.2013 в 12:01. |
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
Tiksa, Вы, имхо, мыслите верно.
Но для проверки возможности построения треугольника можно поступить проще. Достаточно проверить, что каждая сторона треугольника строго меньше, чем сумма двух других. Код:
Да, думаю, что очевидно, что длины сторон можно легко найти по теореме пифагора (корень из суммы квадратов разностей соответствующих координат) |
![]() |
![]() |
![]() |
#7 |
Новичок
Джуниор
Регистрация: 09.10.2013
Сообщений: 7
|
![]()
Ой, действительно ) Да, можно и стороны сравнивать, как-то я об этом не подумал )
|
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 19.09.2013
Сообщений: 597
|
![]()
По поводу типа чисел согласен, почему то упустил этот момент. Во всем остальном же...ребят? вы извращаться любите?
Предложите тест, на котором программа даст неверный ответ. Нужно сменить тип чисел и поменять "false, y - bad" и "false, х - bad" на просто fasle. а то малость некорректно будет) Что касается проверки на длины сторон, а ничего что у нас даны точки,а не длины? и по трем точкам лежащим не на одной прямой ПОЛЮБОМУ можно нарисовать треугольник, при условии что точки тупо в плоскости и не имеют определенной последовательности соединения!
Сделал сам, помоги другому!
Что-то работает не так? Дебаггер в помощь!!! Последний раз редактировалось SaLoKiN; 09.10.2013 в 14:18. |
![]() |
![]() |
![]() |
#9 | ||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
просто для информации: (-1,-1) (2,2) (3,3) лежат на одной прямой. введите в вашу программу. Сообщите результат. если у Вас (ошибочно) может возникнуть мысль, что так получилось от того, что прямая проходит через начало координат, то нет, дело не в этом. вот координаты трёх других точек, лежаших на одной прямой, не проходящей через начало координат: (-1,-3) (1,-1) (3, 1) Цитата:
(-1,-3) (3,-3) (3, 1) чертёж приложить или сами нарисуете треугольник? Последний раз редактировалось Serge_Bliznykov; 09.10.2013 в 15:20. |
||
![]() |
![]() |
![]() |
#10 |
Новичок
Джуниор
Регистрация: 09.10.2013
Сообщений: 7
|
![]()
Треугольник нарисуйте
![]() |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Даны действительные положительные числа a, b, c, d. Определить, можно ли прямоугольник со сторонами a, b уместить внутри прямоуг | Proskurina | Помощь студентам | 1 | 27.03.2013 21:03 |
написать программу на turbo вычислить min если даны числа.задание внутри | Di@nk@ | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 07.02.2012 15:51 |
Даны действительные числа a1,...,a20. Получить числа b1,...,b20, ... | Alfa.Shadow | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 21.12.2011 15:55 |
VBA. Excel. определить сколько треугольников лежит внутри окружности радиуса R с центром вначале координат. | Dus master | Помощь студентам | 6 | 20.06.2011 01:48 |
лежит ли точка внутри треугольника | х-prof | Помощь студентам | 1 | 16.06.2011 20:16 |