![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Костян |
![]()
Сообщение
#1
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 68 Пол: Мужской Репутация: ![]() ![]() ![]() |
Народ, всем салют, у мня к вам вот такой вот вопросик. Есть простенькая задача:написать прогу проверяющую лежат ли 3 точки заданные пользователем на одной прямой(каждая точка имеет две координаты-икс и игрек).
Вот в принципе эта прога: Код program vector; uses crt; var x1,y1,x2,y2,x3,y3: real; otrx1,otry1,otrx2,otry2: real; begin clrscr; writeln('Введите 3 координаты'); readln(x1); readln(y1); readln(x2); readln(y2); readln(x3); readln(y3); otrx1:=x2-x1; otry1:=y2-y1; otrx2:=x3-x1; otry2:=y3-y1; if (otrx1=otrx2) and (otry1=otry2) then writeln('Данные точки лежат на одной прямой') else writeln('Данные точки не лежат на одной прямой'); readkey; end. Вопрос: правильна ли эта прога(считает вроде все правильно), можно ли сделать как нить по другому(конечно можно но хотелось бы увидеть конкретные предложения). Буду очень признателен -------------------- ...И заключили ТЕМНЫЕ И СВЕТЛЫЕ програмисты договор... ...и было в том договоре сказано.... ...что будет создан ночной дозор для контроля темных программистов... ...и будет создан дневной дозор для надзора за светлыми программистами... ..................ТАК НАЧИНАЛАСЬ ЖИЗНЬ ТУРБО ПАСКАЛЯ............. |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Цитата(Костян @ 28.01.2006 23:36) Вопрос: правильна ли эта прога(считает вроде все правильно) Не совсем... Для данных: x1 := 3; y1 := 1;Получаем ответ "Данные точки не лежат на одной прямой", хотя чертеж показывает обратное... Вообще-то эта задача решалась на форуме: Трегольник, стороны которого... (сама функция Includ приведена на несколько постов выше, чем тот, на который ссылка) P.S. Переименуй тему, иначе она будет закрыта... |
hardcase |
![]()
Сообщение
#3
|
![]() code warrior ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 484 Пол: Мужской Реальное имя: Славен Репутация: ![]() ![]() ![]() |
А можно воспользоваться неравеноством треугольника: A(x1,y1) B(x2,y2) C(x3,y3)
|vectAB| + |vectBC| ~ |vectAC| or |vectAC| + |vectAB| ~ |vectBC| or |vectAC| + |vectBC| ~ |vectAB| Код function Line(const A,B,C: TPoint; Eps: double): boolean; fucntion Norm(const M,N: TPoint): double; var _x, _y: double; begin _x:=(M.X-N.X); _y:=(M.Y-N.Y); Result:=abs(_x * _x + _y * _y) end; var vectAB, vectBC, vectAC: double; begin vectAB:=Norm(A,B); vectAC:=Norm(A,C); vectBC:=Norm(B,C); if (abs(vectAB + vectBC - vectAC) < Eps) or (abs(vectAC + vectAB - vectBC) < Eps) or (abs(vectAC + vectBC - vectAB) < Eps) then Result:=true else Result:=false end; -------------------- ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
|
![]() ![]() |
![]() |
Текстовая версия | 20.06.2025 19:04 |