Новые сообщения · Правила  
  • Страница 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
Поиск: