Новые сообщения · Правила  
  • Страница 1 из 1
  • 1
Форум ПРОГРАММИСТОВ » УЧЕБНЫЕ МАТЕРИАЛЫ » Лабораторки » Проверка принадлежности точки прямой заданой двумя точками.
Проверка принадлежности точки прямой заданой двумя точками.
Вводятся координаты трех точек. Проверить что третья точка пренадлежит прямой которая проходит через первые две.

Добавлено (07.11.12, 02:03)
---------------------------------------------
program prjamaja;
{Проверка принадлежности точки прямой заданой двумя точками.
¶Версия 1.1
06.11.2012г.
umbr@ mortis}

var x,y,z,x1,y1,z1,x2,y2,z2,i,j,k:real;

begin
writeln('Проверка принадлежности точки прямой заданой двумя точками.');
writeln('Введите координаты первой точки в пространстве через пробел');
readln(x1,y1,z1);
writeln('Введите координаты второй точки в пространстве через пробел');
readln(x2,y2,z2);
writeln('Введите координаты проверяемой точки в пространстве через пробел');
readln(x,y,z);
i:=(x-x1)*(y2-y1)*(z2-z1);
j:=(y-y1)*(x2-x1)*(z2-z1);
k:=(z-z1)*(x2-x1)*(y2-y1);
if i=j then
begin
if i=k then writeln('Проверяемая точка пренадлежит прямой проведенной через 2 заданые точки.')
else writeln('Проверяемая точка не пренадлежит прямой проведенной через 2 заданые точки.');
end
else writeln('Проверяемая точка не пренадлежит прямой проведенной через 2 заданые точки.');
end.

1 | Автор: umbra111mortis | 2012-11-07, 02:03   |  Репутация: [ + 0 ]
Quote (umbra111mortis)
program prjamaja;
Вообще говоря можно было обойтись одним оператором if. Это для начала.
2 | Автор: admin | 2012-11-07, 18:03   |  Репутация: [ + 22 ]
program tochki;
{Даны 2 точки, которые образуют прямую.
Программа определяет принадлежность 3-ей точки прямой.
Версия 1.0
07.11.12 г.
jester }
var x1,x2,x3,y1,y2,y3,S:real;
begin
writeln('Введите координаты 1-ой точки на плоскости через пробел');
readln(x1,y1);
writeln('Введите координаты 2-ой точки на плоскости через пробел');
readln(x2,y2);
writeln('Введите координаты 3-й точки на плоскости через пробел');
readln(x3,y3);
S:=(x1-x3)*(y2-y3)-(x2-x3)*(y1-y3);
if S=0 then writeln('3-я точка принадлежит прямой') else
writeln('3-я точка не принадлежит прямой');
readln;
end.
3 | Автор: jester | 2012-11-07, 20:19 | Изменено: jester - Ср, 2012-11-07, 21:25   |  Репутация: [ + 3 ]
Quote (jester)
program tochki;
Не вникая пока в детали хочу спросить: "зачем 1/2 в S, если сравниваешь потом с нулем? "
4 | Автор: admin | 2012-11-07, 20:46   |  Репутация: [ + 22 ]
ошибся...1/2 там не нужна
5 | Автор: jester | 2012-11-07, 20:52 | Изменено: jester - Ср, 2012-11-07, 21:04   |  Репутация: [ + 3 ]
5 | Автор: jester | 2012-11-07, 20:52 | Изменено: jester - Ср, 2012-11-07, 21:04   |  Репутация: [ + 3 ]
Quote (admin)
program tochki;
Принимается про 1/2. Продолжим опять не вникая в детали: а что будет если к примеру, окажется что x1=x3 и x2=x3?
6 | Автор: admin | 2012-11-07, 21:48   |  Репутация: [ + 22 ]
тогда S будет равно 0 - 3-я точка пренадлежит прямой (прямая паралельна OY...походу)
7 | Автор: jester | 2012-11-07, 22:17   |  Репутация: [ + 3 ]
program tochka_i_prama;
uses crt;
var x1,y1,x2,y2,x3,y3 : real; {кординати}
a,b,c,d : real; {вектора}
{======================================}
procedure vopros;
begin
writeln('введите кординати первой точки прямой (x,y) через пробел');
readln(x1,y1);
writeln('введите кординати второй точки прямой (x,y) через пробел');
readln(x2,y2);
writeln('введите кординати третей точки (x,y) через пробел');
readln(x3,y3);
a:=sqrt(sqr(y2-y1));
b:=sqrt(sqr(x2-x1));
c:=sqrt(sqr(y3-y2));
d:=sqrt(sqr(x3-x2));
end;
{======================================}
procedure perestrahovka;
begin
a:=a+1;
b:=b+1;
c:=c+1;
d:=d+1;
end;
{======================================}
procedure otvet;
begin
if (x1-x2+x3 = x1) and (y1-y2+y3 = y1) then writeln('3 кординати являются одной точкой')
else if (x1= x3) and (y1=y3) then writeln('точка лежит на первой точке прямой СЛЕДОВАТЕЛЬНО пренадлежит прямой')
else if (x2= x3) and (y2=y3) then writeln('точка лежит на второй точке прямой СЛЕДОВАТЕЛЬНО пренадлежит прямой')
else if (x1= x2) and (y1=y2) then writeln('ОШИБКА ВВОДА : заданая прямая является точкой !')
else if (x1-x2+x3 = x1) then writeln('точка принадлежит прямой (прямая паралельна ox)')
else if (y1-y2+y3 = y1)then writeln('точка принадлежит прямой (прямая паралельна oy) ')
else if (a/b = c/d) then writeln('точка принадлежит прямой')
else writeln('точка не принадлежит прямой !');
end;
{======================================}
begin
clrscr;
vopros;
if (a = 0) then perestrahovka
else if (b = 0) then perestrahovka
else if (c = 0) then perestrahovka
else if (d = 0) then perestrahovka;
otvet;
readln;
end.

ну тут все учтено !
8 | Автор: babun9999 | 2012-11-08, 17:46 | Изменено: babun9999 - Чт, 2012-11-08, 18:56   --------->
Исправлена

program tochki;
{Даны 2 точки, которые образуют прямую.
Программа определяет принадлежность 3-ей точки прямой.
Версия 1.2
13.11.12 г.
jester}
const e=0.00000000001;
var x1,x2,x3,y1,y2,y3,S:real;
begin
writeln('Введите координаты 1-ой точки на плоскости через пробел');
readln(x1,y1);
writeln('Введите координаты 2-ой точки на плоскости через пробел');
readln(x2,y2);
writeln('Введите координаты 3-ей точки на плоскости через пробел');
readln(x3,y3);
if (x1=x2)and(x1=x3)and(y1=y2)and(y1=y3) then writeln('Все координаты принадлежат единственной точке') else
begin
S:=(x2-x1)*(y3-y1)-(x3-x1)*(y2-y1);
if abs(S)<e then writeln('3-я точка принадлежит прямой') else
writeln('3-я точка не принадлежит прямой');
end;
readln;
end.
9 | Автор: jester | 2012-11-13, 18:53   |  Репутация: [ + 3 ]
9 | Автор: jester | 2012-11-13, 18:53   |  Репутация: [ + 3 ]
Сделай дополнительную проверку:
Лежит ли третья точка в отрезке между первой и второй и будет хорошо))


Нужна помощь? Сюда: vkontakte.ru/berestovskiy
10 | Автор: Berestovskiy | 2012-11-13, 19:24   |  Репутация: [ + 211 ]
+
11 | Автор: babun9999 | 2012-11-14, 10:42 | Изменено: babun9999 - Ср, 2012-11-14, 10:43   --------->
^_^

Нужна помощь? Сюда: vkontakte.ru/berestovskiy
12 | Автор: Berestovskiy | 2012-11-14, 13:35   |  Репутация: [ + 211 ]
Форум ПРОГРАММИСТОВ » УЧЕБНЫЕ МАТЕРИАЛЫ » Лабораторки » Проверка принадлежности точки прямой заданой двумя точками.
  • Страница 1 из 1
  • 1
Поиск: