Решение олимпиадных задач по информатике

Задачи, сгруппированные по методам решения. Все через площадь треугольника

Разбить на страницы
Показывать лекцию целиком

Рассмотрим решение базовой задачи.

Задача : Найти площадь треугольника, заданного координатами своих вершин (рис.10.1).

(рис 10.1)

Справочная информация: Для нахождения площади треугольника воспользуемся формулой Герона:

S=SQR (p(p-a)(p-b)(p-c))

где a, b, c - длины сторон, а р - полупериметр.

Программа на Бейсике:

print "введите пары координат трех точек"
input x1, y1
input x2, y2
input x3, y3
a= sqr ((x1-x2)^2+(y1-y2)^2)
b= sqr ((x2-x3)^2+(y2-y3)^2)
c= sqr ((x3-x1)^2+(y3-y1)^2)
per= a+b+c
print  "периметр треугольника="; per
p=per/2
s= sqr (p*(p-a)*(p-b)*(p-c))
print "площадь="; s

Программа на Паскале:

var x1,x2,x3,y1,y2,y3: integer;
  a,b,c,p: real;
begin
  writeln ('введите пары координат трех точек');
  readln (x1, y1);
  readln (x2, y2);
  readln (x3, y3);
  a:= sqrt (sqr(x1-x2)+sqr(y1-y2));
  b:= sqrt (sqr(x2-x3)+sqr(y2-y3));
  c:= sqrt (sqr(x3-x1)+sqr(y3-y1));
  p:=(a+b+c) / 2;
  writeln ('площадь треугольника:=', sqrt (p*(p-a)*(p-b)*(p-c)));
end.

Тест:

Дано:
1,2
1,5
5,2
Результат: 6

Задача: Определить площадь выпуклой фигуры, заданной координатами своих вершин (координаты вводятся в соответствии с последовательным обходом вершин - см. рис.10.2).

Идея решения: задачу можно решить двумя способами.

1 способ: площадь выпуклой фигуры равна сумме площадей треугольников, имеющих общую вершину:

(рис 10.2)

Программа на Бейсике:

input "введите количество вершин многоугольника"; n
dim x(n), y(n)
for i=1 to n
  input "введите пару координат"; x(i), y(i)
next
for i=2 to n-1
  a= sqr ((x(1)-x(i))^2+(y(1)-y(i))^2)
  b= sqr ((x(i)-x(i+1))^2+(y(i)-y(i+1))^2)
  c= sqr ((x(i+1)-x(1))^2+(y(i+1)-y(1))^2)
  p= (a+b+c)/2
  s=s+sqr (p*(p-a)*(p-b)*(p-c))
next
print "площадь фигуры="; s

Программа на Паскале:

const nn=10 ;
var x,y: array [1..nn] of integer;
  i, n: integer;
  a, b, c, s, p: real;
begin
  writeln ('введите количество вершин многоугольника');
  readln (n);
  for i:=1 to n do
    begin
	writeln (''введите пару координат');
	readln (x[i], y[i]);
	end;
  for i:=2 to n-1 do
    begin
	a:= sqrt (sqr(x[1]-x[i])+sqr(y[1]-y[i]));
	b:= sqrt (sqr(x[i]-x[i+1])+sqr(y[i]-y[i+1]));
	c:= sqrt (sqr(x[i+1]-x[1])+sqr(y[i+1]-y[1]));
	p:= (a+b+c)/2
	s:=s+sqrt (p*(p-a)*(p-b)*(p-c))
	end;
  writeln ('площадь фигуры=', s);
end.

Тест:

Дано:
N=5
3,2
2,5
4,7
8,5
7,1
Результат: 23.5

2 способ: Второй способ вычисления площади выпуклой фигуры иллюстрирует схема (рис. 10.3):

(рис 10.3)

Решите задачу этим методом самостоятельно.

Задача 3: Определить - находится точка внутри или вне выпуклого многоугольника, заданного координатами своих вершин.

Идею решения задачи иллюстрирует схема (рис.10.4):

(рис 10.4)

Программа на Бейсике:

input "введите координаты точки"; x, y
input "введите количество вершин многоугольника"; n
dim x(n+1), y(n+1)
for i=1 to n
  input "введите координаты вершин"; x(i), y(i)
next
x(n+1)=x(1)
y(n+1)=y(1)
rem======================================
for i=2 to n-1
  a= sqr ((x(1)-x(i))^2+(y(1)-y(i))^2)
  b= sqr ((x(i)-x(i+1))^2+(y(i)-y(i+1))^2)
  c= sqr ((x(i+1)-x(1))^2+(y(i+1)-y(1))^2)
  p= (a+b+c)/2
  s1=s1+sqr (p*(p-a)*(p-b)*(p-c))
next
rem======================================
for i=1 to n
  a= sqr ((x-x(i))^2+(y-y(i))^2)
  b= sqr ((x(i)-x(i+1))^2+(y(i)-y(i+1))^2)
  c= sqr ((x(i+1)-x)^2+(y(i+1)-y)^2)
  p= (a+b+c)/2
  s2=s2+sqr (p*(p-a)*(p-b)*(p-c))
next
if s1=s2 then print "точка внутри" else print "точка вне фигуры"

Программа на Паскале:

const nn=100 ;
var x,y: array [1..nn] of integer;
  i,xx,yy,n: integer;
  a,b,c, p, s1,s2: real;
begin
  writeln ('введите координаты точки');
  readln (xx,yy);
  writeln ('введите количество вершин многоугольника');
  readln (n);
  for i:=1 to n do
    begin
	writeln ('введите координаты вершин');
	readln (x[i], y[i]);
	end;
  x[n+1]:=x[1];
  y[n+1]:=y[1];
  for i:=2 to n-1 do
    begin
	a:= sqrt (sqr(x[1]-x[i])+sqr(y[1]-y[i]));
	b:= sqrt (sqr(x[i]-x[i+1])+sqr(y[i]-y[i+1]));
	c:= sqrt (sqr(x[i+1]-x[1])+sqr(y[i+1]-y[1]));
	p:= (a+b+c) / 2;
	s1:=s1+sqrt (p*(p-a)*(p-b)*(p-c));
	end;
  for i:=1 to n do
	begin
	a:= sqrt (sqr(xx-x[i])+sqr(yy-y[i]));
	b:= sqrt (sqr(x[i]-x[i+1])+sqr(y[i]-y[i+1]));
	c:= sqrt (sqr(x[i+1]-xx)+sqr(y[i+1]-yy));
	p:= (a+b+c) / 2;
	s2:=s2+sqrt (p*(p-a)*(p-b)*(p-c));
	end;
  if round(s1)=round(s2) then writeln ('точка внутри') 
  else writeln ('точка вне фигуры');
end.

Тест:

Дано:
5,4
5
3,2
2,5
4,7
8,5
7,1
10,10
5
3,2
2,5
4,7
8,5
7,1
Результат: внутри вне

Задача 4: Определить, пересекаются ли два отрезка, заданные на плоскости координатами своих концов (примеры взаимного расположения отрезков на рис.10.5).

(рис 10.5)

Идею решения задачи иллюстрирует схема (рис.10.6):

  • Отрезки пересекаются если:

    (рис 10.6)
  • Отрезки не пересекаются (рис.10.7) если …

    (рис 10.7)
  • Следует отметить, что данный метод определения пересечения двух отрезков имеет исключение, в случаях:

  • если отрезки равной длины и параллельны;
  • если отрезки находятся на одной прямой, но не имеют общих точек
  • Программа на Бейсике:

    input "введите две координаты концов 1 отрезка"; x1,y1
    input "введите две координаты концов 1 отрезка"; x2,y2
    input "введите две координаты концов 2 отрезка"; xx1,yy1
    input "введите две координаты концов 2 отрезка"; xx2,yy2
    rem=площадь первой фигуры=======================
    a=sqr ((xx1-xx2)^2+(yy1-yy2)^2)
    b=sqr ((x1-xx1)^2+(y1-yy1)^2)
    c=sqr ((x1-xx2)^2+(y1-yy2)^2)
    p= (a+b+c)/2
    s1=s1+sqr (p*(p-a)*(p-b)*(p-c))
    rem
    b=sqr ((x2-xx1)^2+(y2-yy1)^2)
    c=sqr ((x2-xx2)^2+(y2-yy2)^2)
    p= (a+b+c)/2
    s1=s1+sqr (p*(p-a)*(p-b)*(p-c))
    rem=площадь второй фигуры===========================
    a=sqr ((x1-x2)^2+(y1-y2)^2)
    b=sqr ((x2-xx1)^2+(y2-yy1)^2)
    c=sqr ((x1-xx1)^2+(y1-yy1)^2)
    p= (a+b+c)/2
    s2=s2+sqr (p*(p-a)*(p-b)*(p-c))
    rem
    b=sqr ((x1-xx2)^2+(y1-yy2)^2)
    c=sqr ((x2-xx2)^2+(y2-yy2)^2)
    p= (a+b+c)/2
    s2=s2+sqr (p*(p-a)*(p-b)*(p-c))
    rem============================================
    print s1,s2
    if int(s1)=int(s2) then print  "пересекаются" else print "не пересекаются"
    

    Программа на Паскале:

    var x1,x2,y1,y2,xx1,xx2,yy1,yy2: integer;
      p,a,b,c,s1,s2:real;
    begin
      writeln ('введите две координаты концов 1 отрезка');
      readln (x1,y1);
      writeln ('введите две координаты концов 1 отрезка');
      readln (x2,y2);
      writeln ('введите две координаты концов 2 отрезка');
      readln (xx1,yy1);
      writeln ('введите две координаты концов 2 отрезка');
      readln (xx2,yy2);
      {=====площадь первой фигуры=============}
      a:=sqrt (sqr(xx1-xx2)+sqr(yy1-yy2));
      b:=sqrt (sqr(x1-xx1)+sqr(y1-yy1));
      c:=sqrt (sqr(x1-xx2)+sqr(y1-yy2));
      p:= (a+b+c)/2;
      s1:=s1+sqrt (p*(p-a)*(p-b)*(p-c));
      {==================================}
      b:=sqrt (sqr(x2-xx1)+sqr(y2-yy1));
      c:=sqrt (sqr(x2-xx2)+sqr(y2-yy2));
      p:= (a+b+c)/2;
      s1:=s1+sqrt (p*(p-a)*(p-b)*(p-c));
      {=====площадь второй фигуры=============}
      a:=sqrt (sqr (x1-x2)+ sqr (y1-y2));
      b:=sqrt (sqr (x2-xx1)+ sqr (y2-yy1));
      c:=sqrt (sqr (x1-xx1)+ sqr (y1-yy1));
      p:= (a+b+c)/2;
      s2:=s2+sqrt (p*(p-a)*(p-b)*(p-c));
      {=================================}
      b:=sqrt (sqr (x1-xx2)+ sqr (y1-yy2));
      c:=sqrt (sqr (x2-xx2)+ sqr (y2-yy2));
      p:= (a+b+c)/2;
      s2:=s2+sqrt (p*(p-a)*(p-b)*(p-c));
      {==================================}
      writeln (s1,s2);
      if round(s1)=round(s2) then writeln ('пересекаются')
      else writeln ('не пересекаются');
    end.

    Тест:

    Дано:
    2,4
    8,7
    3,8
    8,1
    3,6
    8,1
    6,5
    11,7
    Результат: Пересекаются Не пересекаются

    Ключевые термины

  • Формула Герона - формула для вычисления площади треугольника по длинам его сторон.
  • Краткие итоги

    Для определения площади треугольника необходимо воспользоваться формулой Герона.

    Для нахождения площади многоугольника потребуется найти сумму площадей треугольников, составляющих этот многоугольник.

    Решение задач на определение вхождения точки в область многоугольника, пересечения двух отрезков необходимо также найти площади треугольников, составляющих фигуры.

    Набор для практики

    Вопросы.

  • Какой формулой пользуются для вычисления площади треугольника?
  • Каким способом вычисляют площадь многоугольника?
  • Опишите метод для определения вхождения точки внутрь многоугольника.
  • Подумайте, как можно определить "вхождение" одной фигуры в другую?
  • Опишите метод для определения, пересекаются ли два отрезка.
  • Подумайте - есть ли исключения у метода определения пересечения двух отрезков?
  • Упражнения.

  • Треугольник на плоскости задан координатами своих вершин. Определить - прямоугольный ли этот треугольник?
  • Найти площадь 4-хугольника (не обязательно прямоугольника), заданного координатами своих вершин (на рис.10.8 изображен частный случай). Найти другой метод (кроме метода разбиения многоугольника на треугольники) нахождения площади этого прямоугольника.

    (рис 10.8)
  • С клавиатуры вводятся пары координат n точек на плоскости. Найти длину ломанной, соединяющей эти точки. Начало ломанной - ближайшая к центру координатной плоскости точка, ломанная соединяет все точки кратчайшим способом.
  • Многоугольник задан координатами своих последовательных вершин. Внутренний угол в одной из вершин многоугольника - тупой. Определите эту вершину.
  • Страницы:

    Рассмотрим решение базовой задачи.

    Задача : Найти площадь треугольника, заданного координатами своих вершин (рис.10.1).

    (рис 10.1)

    Справочная информация: Для нахождения площади треугольника воспользуемся формулой Герона:

    S=SQR (p(p-a)(p-b)(p-c))

    где a, b, c - длины сторон, а р - полупериметр.

    Программа на Бейсике:

    print "введите пары координат трех точек"
    input x1, y1
    input x2, y2
    input x3, y3
    a= sqr ((x1-x2)^2+(y1-y2)^2)
    b= sqr ((x2-x3)^2+(y2-y3)^2)
    c= sqr ((x3-x1)^2+(y3-y1)^2)
    per= a+b+c
    print  "периметр треугольника="; per
    p=per/2
    s= sqr (p*(p-a)*(p-b)*(p-c))
    print "площадь="; s
    

    Программа на Паскале:

    var x1,x2,x3,y1,y2,y3: integer;
      a,b,c,p: real;
    begin
      writeln ('введите пары координат трех точек');
      readln (x1, y1);
      readln (x2, y2);
      readln (x3, y3);
      a:= sqrt (sqr(x1-x2)+sqr(y1-y2));
      b:= sqrt (sqr(x2-x3)+sqr(y2-y3));
      c:= sqrt (sqr(x3-x1)+sqr(y3-y1));
      p:=(a+b+c) / 2;
      writeln ('площадь треугольника:=', sqrt (p*(p-a)*(p-b)*(p-c)));
    end.

    Тест:

    Дано:
    1,2
    1,5
    5,2
    Результат: 6

    Задача: Определить площадь выпуклой фигуры, заданной координатами своих вершин (координаты вводятся в соответствии с последовательным обходом вершин - см. рис.10.2).

    Идея решения: задачу можно решить двумя способами.

    1 способ: площадь выпуклой фигуры равна сумме площадей треугольников, имеющих общую вершину:

    (рис 10.2)

    Программа на Бейсике:

    input "введите количество вершин многоугольника"; n
    dim x(n), y(n)
    for i=1 to n
      input "введите пару координат"; x(i), y(i)
    next
    for i=2 to n-1
      a= sqr ((x(1)-x(i))^2+(y(1)-y(i))^2)
      b= sqr ((x(i)-x(i+1))^2+(y(i)-y(i+1))^2)
      c= sqr ((x(i+1)-x(1))^2+(y(i+1)-y(1))^2)
      p= (a+b+c)/2
      s=s+sqr (p*(p-a)*(p-b)*(p-c))
    next
    print "площадь фигуры="; s
    

    Программа на Паскале:

    const nn=10 ;
    var x,y: array [1..nn] of integer;
      i, n: integer;
      a, b, c, s, p: real;
    begin
      writeln ('введите количество вершин многоугольника');
      readln (n);
      for i:=1 to n do
        begin
    	writeln (''введите пару координат');
    	readln (x[i], y[i]);
    	end;
      for i:=2 to n-1 do
        begin
    	a:= sqrt (sqr(x[1]-x[i])+sqr(y[1]-y[i]));
    	b:= sqrt (sqr(x[i]-x[i+1])+sqr(y[i]-y[i+1]));
    	c:= sqrt (sqr(x[i+1]-x[1])+sqr(y[i+1]-y[1]));
    	p:= (a+b+c)/2
    	s:=s+sqrt (p*(p-a)*(p-b)*(p-c))
    	end;
      writeln ('площадь фигуры=', s);
    end.

    Тест:

    Дано:
    N=5
    3,2
    2,5
    4,7
    8,5
    7,1
    Результат: 23.5

    2 способ: Второй способ вычисления площади выпуклой фигуры иллюстрирует схема (рис. 10.3):

    (рис 10.3)

    Решите задачу этим методом самостоятельно.

    Задача 3: Определить - находится точка внутри или вне выпуклого многоугольника, заданного координатами своих вершин.

    Идею решения задачи иллюстрирует схема (рис.10.4):

    (рис 10.4)

    Программа на Бейсике:

    input "введите координаты точки"; x, y
    input "введите количество вершин многоугольника"; n
    dim x(n+1), y(n+1)
    for i=1 to n
      input "введите координаты вершин"; x(i), y(i)
    next
    x(n+1)=x(1)
    y(n+1)=y(1)
    rem======================================
    for i=2 to n-1
      a= sqr ((x(1)-x(i))^2+(y(1)-y(i))^2)
      b= sqr ((x(i)-x(i+1))^2+(y(i)-y(i+1))^2)
      c= sqr ((x(i+1)-x(1))^2+(y(i+1)-y(1))^2)
      p= (a+b+c)/2
      s1=s1+sqr (p*(p-a)*(p-b)*(p-c))
    next
    rem======================================
    for i=1 to n
      a= sqr ((x-x(i))^2+(y-y(i))^2)
      b= sqr ((x(i)-x(i+1))^2+(y(i)-y(i+1))^2)
      c= sqr ((x(i+1)-x)^2+(y(i+1)-y)^2)
      p= (a+b+c)/2
      s2=s2+sqr (p*(p-a)*(p-b)*(p-c))
    next
    if s1=s2 then print "точка внутри" else print "точка вне фигуры"
    

    Программа на Паскале:

    const nn=100 ;
    var x,y: array [1..nn] of integer;
      i,xx,yy,n: integer;
      a,b,c, p, s1,s2: real;
    begin
      writeln ('введите координаты точки');
      readln (xx,yy);
      writeln ('введите количество вершин многоугольника');
      readln (n);
      for i:=1 to n do
        begin
    	writeln ('введите координаты вершин');
    	readln (x[i], y[i]);
    	end;
      x[n+1]:=x[1];
      y[n+1]:=y[1];
      for i:=2 to n-1 do
        begin
    	a:= sqrt (sqr(x[1]-x[i])+sqr(y[1]-y[i]));
    	b:= sqrt (sqr(x[i]-x[i+1])+sqr(y[i]-y[i+1]));
    	c:= sqrt (sqr(x[i+1]-x[1])+sqr(y[i+1]-y[1]));
    	p:= (a+b+c) / 2;
    	s1:=s1+sqrt (p*(p-a)*(p-b)*(p-c));
    	end;
      for i:=1 to n do
    	begin
    	a:= sqrt (sqr(xx-x[i])+sqr(yy-y[i]));
    	b:= sqrt (sqr(x[i]-x[i+1])+sqr(y[i]-y[i+1]));
    	c:= sqrt (sqr(x[i+1]-xx)+sqr(y[i+1]-yy));
    	p:= (a+b+c) / 2;
    	s2:=s2+sqrt (p*(p-a)*(p-b)*(p-c));
    	end;
      if round(s1)=round(s2) then writeln ('точка внутри') 
      else writeln ('точка вне фигуры');
    end.

    Тест:

    Дано:
    5,4
    5
    3,2
    2,5
    4,7
    8,5
    7,1
    10,10
    5
    3,2
    2,5
    4,7
    8,5
    7,1
    Результат: внутри вне

    Задача 4: Определить, пересекаются ли два отрезка, заданные на плоскости координатами своих концов (примеры взаимного расположения отрезков на рис.10.5).

    (рис 10.5)

    Идею решения задачи иллюстрирует схема (рис.10.6):

  • Отрезки пересекаются если:

    (рис 10.6)
  • Отрезки не пересекаются (рис.10.7) если …

    (рис 10.7)
  • Следует отметить, что данный метод определения пересечения двух отрезков имеет исключение, в случаях:

  • если отрезки равной длины и параллельны;
  • если отрезки находятся на одной прямой, но не имеют общих точек
  • Программа на Бейсике:

    input "введите две координаты концов 1 отрезка"; x1,y1
    input "введите две координаты концов 1 отрезка"; x2,y2
    input "введите две координаты концов 2 отрезка"; xx1,yy1
    input "введите две координаты концов 2 отрезка"; xx2,yy2
    rem=площадь первой фигуры=======================
    a=sqr ((xx1-xx2)^2+(yy1-yy2)^2)
    b=sqr ((x1-xx1)^2+(y1-yy1)^2)
    c=sqr ((x1-xx2)^2+(y1-yy2)^2)
    p= (a+b+c)/2
    s1=s1+sqr (p*(p-a)*(p-b)*(p-c))
    rem
    b=sqr ((x2-xx1)^2+(y2-yy1)^2)
    c=sqr ((x2-xx2)^2+(y2-yy2)^2)
    p= (a+b+c)/2
    s1=s1+sqr (p*(p-a)*(p-b)*(p-c))
    rem=площадь второй фигуры===========================
    a=sqr ((x1-x2)^2+(y1-y2)^2)
    b=sqr ((x2-xx1)^2+(y2-yy1)^2)
    c=sqr ((x1-xx1)^2+(y1-yy1)^2)
    p= (a+b+c)/2
    s2=s2+sqr (p*(p-a)*(p-b)*(p-c))
    rem
    b=sqr ((x1-xx2)^2+(y1-yy2)^2)
    c=sqr ((x2-xx2)^2+(y2-yy2)^2)
    p= (a+b+c)/2
    s2=s2+sqr (p*(p-a)*(p-b)*(p-c))
    rem============================================
    print s1,s2
    if int(s1)=int(s2) then print  "пересекаются" else print "не пересекаются"
    

    Программа на Паскале:

    var x1,x2,y1,y2,xx1,xx2,yy1,yy2: integer;
      p,a,b,c,s1,s2:real;
    begin
      writeln ('введите две координаты концов 1 отрезка');
      readln (x1,y1);
      writeln ('введите две координаты концов 1 отрезка');
      readln (x2,y2);
      writeln ('введите две координаты концов 2 отрезка');
      readln (xx1,yy1);
      writeln ('введите две координаты концов 2 отрезка');
      readln (xx2,yy2);
      {=====площадь первой фигуры=============}
      a:=sqrt (sqr(xx1-xx2)+sqr(yy1-yy2));
      b:=sqrt (sqr(x1-xx1)+sqr(y1-yy1));
      c:=sqrt (sqr(x1-xx2)+sqr(y1-yy2));
      p:= (a+b+c)/2;
      s1:=s1+sqrt (p*(p-a)*(p-b)*(p-c));
      {==================================}
      b:=sqrt (sqr(x2-xx1)+sqr(y2-yy1));
      c:=sqrt (sqr(x2-xx2)+sqr(y2-yy2));
      p:= (a+b+c)/2;
      s1:=s1+sqrt (p*(p-a)*(p-b)*(p-c));
      {=====площадь второй фигуры=============}
      a:=sqrt (sqr (x1-x2)+ sqr (y1-y2));
      b:=sqrt (sqr (x2-xx1)+ sqr (y2-yy1));
      c:=sqrt (sqr (x1-xx1)+ sqr (y1-yy1));
      p:= (a+b+c)/2;
      s2:=s2+sqrt (p*(p-a)*(p-b)*(p-c));
      {=================================}
      b:=sqrt (sqr (x1-xx2)+ sqr (y1-yy2));
      c:=sqrt (sqr (x2-xx2)+ sqr (y2-yy2));
      p:= (a+b+c)/2;
      s2:=s2+sqrt (p*(p-a)*(p-b)*(p-c));
      {==================================}
      writeln (s1,s2);
      if round(s1)=round(s2) then writeln ('пересекаются')
      else writeln ('не пересекаются');
    end.

    Тест:

    Дано:
    2,4
    8,7
    3,8
    8,1
    3,6
    8,1
    6,5
    11,7
    Результат: Пересекаются Не пересекаются

    Ключевые термины

  • Формула Герона - формула для вычисления площади треугольника по длинам его сторон.
  • Краткие итоги

    Для определения площади треугольника необходимо воспользоваться формулой Герона.

    Для нахождения площади многоугольника потребуется найти сумму площадей треугольников, составляющих этот многоугольник.

    Решение задач на определение вхождения точки в область многоугольника, пересечения двух отрезков необходимо также найти площади треугольников, составляющих фигуры.

    Набор для практики

    Вопросы.

  • Какой формулой пользуются для вычисления площади треугольника?
  • Каким способом вычисляют площадь многоугольника?
  • Опишите метод для определения вхождения точки внутрь многоугольника.
  • Подумайте, как можно определить "вхождение" одной фигуры в другую?
  • Опишите метод для определения, пересекаются ли два отрезка.
  • Подумайте - есть ли исключения у метода определения пересечения двух отрезков?
  • Упражнения.

  • Треугольник на плоскости задан координатами своих вершин. Определить - прямоугольный ли этот треугольник?
  • Найти площадь 4-хугольника (не обязательно прямоугольника), заданного координатами своих вершин (на рис.10.8 изображен частный случай). Найти другой метод (кроме метода разбиения многоугольника на треугольники) нахождения площади этого прямоугольника.

    (рис 10.8)
  • С клавиатуры вводятся пары координат n точек на плоскости. Найти длину ломанной, соединяющей эти точки. Начало ломанной - ближайшая к центру координатной плоскости точка, ломанная соединяет все точки кратчайшим способом.
  • Многоугольник задан координатами своих последовательных вершин. Внутренний угол в одной из вершин многоугольника - тупой. Определите эту вершину.
  • Вернуться к учебному плану