IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Принадлежность точки отрезкам., Заданы N отрезков с координатами концов.
sergey121212
сообщение 11.11.2011 1:46
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 20
Пол: Мужской

Репутация: -  0  +


Вообщем не пойму саму суть определения...
const n=3;
var i,x,k:integer;
a,b:array[1..n] of real;
begin
for i:=1 to n do
begin
writeln('Введите начало ',i,' отрезка');
readln(a[1]);
writeln('Введите конец ',i,' отрезка');
readln (b[1]);
end;
k:=0;
for i:=1 to n do
if (x>=a[i]) and (x<=b[i]) then
k:=k+1;
writeln(k);
if k=n then writeln('Да')
else
writeln ('Нет');
end.


Изображение



Думаю как-то так , хотя тут проверка пока-что только 2 отрезка...

const n=3;
type point=record
x,y:real;
end;
otr=record
k1,k2:point;
end;
var i:integer;
t:array[1..n] of otr;
x,y:real;


procedure ras(t1,t2:otr;var x,y:real);
begin
x:=((t1.k1.x*t1.k2.y-t1.k2.x*t1.k1.y)*(t2.k1.x-t2.k1.x)-(t2.k1.x*t2.k2.y-t2.k2.x*t2.k1.y)*(t1.k2.x-t1.k1.x))/((t1.k1.y-t1.k2.y)*(t2.k2.x-t2.k1.x)-(t2.k1.y-t2.k2.y)*(t1.k2.x-t1.k1.x));
y:=((t2.k1.y-t2.k2.y)*x-(t2.k1.x*t2.k2.y-t2.k2.x*t2.k1.y))/(t2.k2.x-t2.k1.x);
end;

begin
writeln('Введите координаты отрезков:');
for i:=1 to n do
begin
writeln('Отрезок #',i);
write('x1=');readln(t[i].k1.x);
write('y1=');readln(t[i].k1.y);
write('x2=');readln(t[i].k2.x);
write('y2=');readln(t[i].k2.y);
end;
ras(t[1],t[2],x,y);
if (((t[1].k1.x<=x)and(t[1].k2.x>=x)and(t[2].k1.x<=x)and(t[2].k2.x >=x))or((t[1].k1.y<=y)and(t[1].k2.y>=y)and(t[2].k1.y<=y) and(t[2].k2.y>=y))) then
writeln('Есть точка пересечения ! ')
else writeln('Нет точки пересечения ! ');

end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 18.06.2025 8:34
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"