главная     электронная почта

Решение задачи

{ Определить яв-ся ли n-угольник выпуклым Ввод состоит из n отрезков, n>3 и n<10 }



uses crt;
var m,n,k,i,j : integer;
    ot:boolean;
    x,y:array[1..10] 
	of integer;
    z1,z2:real;
procedure haltproc;
begin
  writeln('Неверные данные');
  writeln('n >= 3');
  readln;
  halt;
end;
begin
  clrscr;
  write('n=');readln(n);
  if n<3 then haltproc;
  for i:=1 to n do
  begin
    write('x[',i,']=');
	readln(x[i]);
    write('y[',i,']=');
	readln(y[i]);
  end;
  ot:=true;
  for i:=1 to n do
  begin
    j:=i+1;
    k:=j+1;
    if k=n+1 then k:=1;
    if i=n then j:=1;
    m:=i-1;
    if m=n-1 then k:=2;
    if i=1 then m:=n;
    z1:=(x[m]-x[i])*(y[j]-y[i])
	-(y[m]-y[i])*(x[j]-x[i]);
    z2:=(x[k]-x[i])*(y[j]-y[i])
	-(y[k]-y[i])*(x[j]-x[i]);
    if z1*z2<0 then ot:=false;
  end;
  if ot=true then 
  write('выпуклый')
    else write('не выпуклый');
  readln;
end.


Hosted by uCoz