Новые сообщения · Правила  
  • Страница 1 из 1
  • 1
Модератор форума: Berestovskiy  
Очень нужна помощь по написанным программам!
нужно прокомментировать пару простых программ! помогите!

Код
uses
   crt;

type
   point = array [1..2] of real;

const
   n = 4;
   p: array [1..n] of point = ((1, 1), (1, 5), (6, 5), (6, 1));

function distance(i, j: integer): real;
begin
   distance := sqrt(sqr(p[i, 1] - p[j, 1]) + sqr(p[i, 2] - p[j, 2]));
end;

function angle(i, j, k: integer): boolean;    
var
   p0, p1, p2: point; s: real;
begin
   p0 := p[i]; p1 := p[j]; p2 := p[k];    {присвоение к временным переменным}
    
   p1[1] := p1[1] - p0[1]; p1[2] := p1[2] - p0[2]; {вычисление по точкам к примеру для угла BAC нужно}  
    
   p2[1] := p2[1] - p0[1]; p2[2] := p2[2] - p0[2];  {(В(X)-A(X)*B(Y)-A(Y))+(C(X)-A(X)*С(Y)-A(Y)) где X и Y числа координатной оси}
    
   s := p1[1] * p2[1] + p1[2] * p2[2];
   if s = 0 then angle := true
   else angle := false;
end;

function square(i, j, k, l: integer): boolean;
begin
   if (angle(i, l, j) = true) and
      (angle(k, j, l) = true) and
      (distance(i, l) = distance(i, j)) and
      (distance(i, j) = distance(j, k)) then  
     square := true
   else square := false;
end;

function rectangle(i, j, k, l: integer): boolean;
begin
   if (angle(i, l, j) = true) and
      (angle(k, j, l) = true) and (
      (distance(i, l) <> distance(i, j)) or
      (distance(i, j) <> distance(j, k))) then  
     rectangle := true
   else rectangle := false;
end;

var
   i, j, k, l: integer;

begin
   clrscr;
   for i := 1 to n - 3 do
     for j := i + 1 to n - 2 do
       for k := i + 2 to n - 1 do
         for l := i + 3 to n do
           if square(i, j, k, l) = true then writeln('Квадрат') else  
           if rectangle(i, j, k, l) = true then writeln('Прямоугольник') else
             writeln('Не прямой угол детектед');
end.
1 | Автор: wadim95 | 2014-01-10, 09:43   |  Репутация: [ + 0 ]
  • Страница 1 из 1
  • 1
Поиск: