школьные олимпиады по программированию.Решение и разбор задач.

var x1,y1,x2,y2,x3,y3,x4,y4:integer;
k1,k2,b1,b2:real;
x0,y0:real;

begin
assign(input,'input.txt');
assign(output,'output.txt');
reset(input);
rewrite(output);
read(x1,y1,x2,y2,x3,y3,x4,y4);
k1:=(y2-y1)/(x2-x1);
b1:=(y1*x2-y2*x1)/(x2-x1);
k2:=(y4-y3)/(x4-x3);
b2:=(y3*x4-y4*x3)/(x4-x3);
if k1<>k2 then
begin
x0:=(b2-b1)/(k1-k2);
y0:=k1*x0+b1;
if ((((x0>x1) and (x0x2))) and (((x0>x3) and (x0((x0x4)))) and
((((y0>y1) and (y0((y0y2))) and (((y0>y3) and
(y0y4))))
then write(x0:8:5,' ',y0:8:5) else write('no') end;
else write('no')
end.

Решение и разбор задачи
Задача 4.Пересечение отрезков.

Определить координаты точки пересечения двух отрезков заданных своими координатами в XOY, если они не пересекаются вывести сообщение ‘no’
Формат входных данных: в первой строке координаты начала и конца 1-ого отрезка, во второй координаты начала и конца 2-ого отрезка
INPUT.TXT
0 0 2 2
1 1 0 2
OUTPUT.TXT
1 1
Алгоритм

1)из входного файла input.txt считываем координаты 4-ех точек концов заданных отрезков

2)находим параметры прямых на которых лежат эти отрезки,постоянную и угловой коэффициент

3)если угловые коффициенты не равны ищем точку пересечения этих прямых

4)проверяем условие принадлежности точки пересечения заданным отрезкам по условию вхождению в область ограниченную координатами концов отрезков 5)выводим сообщение принадлежности как "координаты точки пересечения" или "no" как не существования такой точки

Знать:
  • формулу прямой, формулу нахождения параметров прямой по координатам двух точек
  • оператор выбора "if <условие> then <оператор>"


Уметь:
  • работать с входными и выходными файлами input.txt output.txt


домой
Hosted by uCoz