Тема: задача
Показать сообщение отдельно
  #3  
Старый 04.06.2010, 14:29
Аватар для SerginhoLD
SerginhoLD SerginhoLD вне форума
Новичок
 
Регистрация: 19.11.2009
Сообщения: 73
Репутация: 12
По умолчанию

Код:
program Angles;

{$APPTYPE CONSOLE}

uses
  SysUtils,Math;

type
  Point = record
    x: double;
    y: double;
  end;

var
  a,b,c: Point; //точки
  bc , ac , ab: double; //длины сторон
  a_A, a_B, a_C: double;//углы (угол a_A напротив стороны bc и т.п.)

begin
  // ввод координат вершин треугольника
  writeln('vvedite koordinaty tochki A:');
  write('x='); readln(a.x); write('y='); readln(a.y);
  writeln('vvedite koordinaty tochki B:');
  write('x='); readln(b.x); write('y='); readln(b.y);
  writeln('vvedite koordinaty tochki C:');
  write('x='); readln(c.x); write('y='); readln(c.y);
  // вычисляем длины сторон треугольника
  ab:=sqrt(sqr(b.x-a.x)+sqr(b.y-a.y));
  ac:=sqrt(sqr(c.x-a.x)+sqr(c.y-a.y));
  bc:=sqrt(sqr(c.x-b.x)+sqr(c.y-b.y));
  // вычисляем углы:  (теорема косинусов: cosA = ( c^2+b^2-a^2 ) / (2*c*b) ;)
  a_A:=(sqr(ab)+sqr(ac)-sqr(bc))/(2*ab*ac);
  a_A:=RadToDeg(ArcCos(a_A));
  a_B:=(sqr(ab)+sqr(bc)-sqr(ac))/(2*ab*bc);
  a_B:=RadToDeg(ArcCos(a_B));
  a_C:=180-a_A-a_B;
  //
  writeln('ugol A:  ',a_A:4:2);
  writeln('ugol B:  ',a_B:4:2);
  writeln('ugol C:  ',a_C:4:2);
  readln;
end.
Ответить с цитированием