Пересечение 2-х отрезков - Pascal ABC

  1. Есть формулаDelphi1 2 x:=-((x1*y2-x2*y1)*(x4-x3)-(x3*x4-x4*y3)*(x2-x1))/((y1-y2)*(x4-x3)-(y3-y4)*(x2-x1));     y:=((y3-y4)*(-x)-(x3*y4-x4*y3))/(x4-x3);но эта формула не работает, если один из отрезков параллелен оси Х или У как мне найти в таком случае точку пересечения этих отрезков?


textual

Код к задаче: «Пересечение 2-х отрезков - Pascal ABC»

uses crt;
const e=0.0001;
var x1,y1,x2,y2,x3,y3,x4,y4,x,y:real;
begin
clrscr;
writeln('Введите координаты концов первого отрезка:');
readln(x1,y1,x2,y2);
writeln('Введите координаты концов второго отрезка:');
readln(x3,y3,x4,y4);
if(abs(x1-x2)<e)and(abs(x3-x4)<e)or(abs((y2-y1)*(x4-x3)-(y4-y3)*(x2-x1))<e)then
writeln('Отрезки параллельны')
else
 begin
  if(abs(x1-x2)<e)and(abs(y3-y4)<e)then
   begin
    x:=x1;
    y:=y3;
   end
  else if(abs(x3-x4)<e)and(abs(y1-y2)<e)then
   begin
    x:=x3;
    y:=y1;
   end
  else
   begin
    x:=-((x1*y2-x2*y1)*(x4-x3)-(x3*x4-x4*y3)*(x2-x1))/((y1-y2)*(x4-x3)-(y3-y4)*(x2-x1));
    y:=((y3-y4)*(-x)-(x3*y4-x4*y3))/(x4-x3);
   end;
  if((x>=x1)and(x<=x2))or((x>=x2)and(x<=x))then
   begin
    writeln('Отрезки пересекаются ');
    write('x=',x:0:2,' y=',y:0:2);
   end
  else write('Отрезки не пересекаются');
 end;
end.

Блок-схема:

Блок-схема к задаче: Пересечение 2-х отрезков - Pascal ABC

СДЕЛАЙТЕ РЕПОСТ

11   голосов, оценка 4.182 из 5



Похожие ответы
  1. Задача с http://informatics.mccme.ru/mod/stat...hapterid=516#1 Недавно Петя занялся изучением древних цивилизаций. Он нашел в энциклопедии даты рождения и гибели N различных древних цивилизаций и теперь хочет узнать о влиянии культуры одних цивилизаций на культуру других. Петя предположил, что между цивилизациями A и B происходил культурный обмен, если они сосуществовали в течение некоторого ненулевого промежутка времени. Например, если цивилизация A зародилась в 600 году до н.э. и существовала до 400 года до н.э., а цивилизация B зародилась в 450 году до н.э. и существовала до 300 года до н.э., то культура каждой из этих цивилизаций оказывала влияние на развитие другой цивилизации в течение 50 лет. В то же время, если цивилизация C зародилась в 400 году до н.э. и существовала до 50 года до н.э., то она не смогла осуществить культурного обмена с цивилизацией A, в то время как культурный обмен с цивилизацией B продолжался в течение 100 лет. Теперь для выполнения своих исследований Петя хочет найти такую пару цивилизаций, культурный обмен между которыми имел место на протяжении наименьшего ненулевого промежутка времени. Помогите ему! Входные данные В первой строке вводится число N – количество цивилизаций, культура которых интересует Петю (1N100 000). Следующие N строк содержат описание цивилизаций – в каждой строке задаются два целых числа Si и Ei – год зарождения и год гибели соответствующей цивилизации. Все числа не превосходят 109 по абсолютной величине, Si < Ei. Выходные данные Выведите два числа – номера цивилизаций, периоды существования которых имеют наименьшее ненулевое пересечение. Если никакие две цивилизации не пересекаются во времени, выведите единственное число 0. Примеры входные данные 3 -600 -400 -450 -300 -400 -50 выходные данные 1 2 входные данные 2 10 20 15 21 выходные данные 1 2 входные данные 1 77777 77778 выходные данные 0 моя попытка:

  1. Используя программу ранжирования, найти произведение наименьшего и 2-х наибольших элементов массива: Т= (-2,1,3,-4,2,0,1,-3,5) Вот мой код:

  1. Дан текст, заменить все вхождения заданного слога (сочетания 2-х символов) на заданный символ. Тема:строки.

  1. Выручайте, ребят Дан файл f, компоненты которого являются действительными числами. Число компонент файла кратно 2-м. Получить в файле g наибольшие из каждых 2-х компонент файла f.

  1. Дан файл f,компоненты которого являются действительными числами. Число компонент файла кратно 2-м. Получить в файле g суммы из каждых 2-х компонент файла f.

  1. Пусть сгенерированные на ЭВМ множества А, В, С состоят из элементов: А = {1, 3, 4, 5, 10}, B = {3, 5, 7, 8, 9}, C = {3, 5, 6 , 9, 10}. Тогда результат выполнения операции пересечения этих множеств имеет вид: D = A B C = {3, 5} написать код Вот часть кода есть

  1. Алгоритм основан на том факте, что для любых двух многочленов от одного переменного, f(x) и g(x), существуют такие многочлены q(x) и r(x), называемые соответственно частное и остаток: f(x) = g(x)∙q(x) + r(x)

  1. Считать из файла целочисленную матрицу и обнулить строку и столбец на пересечение которых стоит минимальный элемент.Заранее спасибо))))

  1. Найти все 4-х значные числа в которых сумма первых 2-х цифр числа равна сумме третьей и четвертой цифр этого числа...