Форум программистов, компьютерный форум, киберфорум
Наши страницы
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
Мария++
0 / 0 / 0
Регистрация: 17.07.2012
Сообщений: 8
1

Найти высоту треугольника

18.07.2012, 15:43. Просмотров 2391. Ответов 1
Метки нет (Все метки)

Привет! Помогите с задачкой..
Используя типы TPoint, TTriangle и функцию Dist, описать процедуру Heights(T, h1, h2, h3),
находящую высоты h1, h2, h3 треугольника T (T — входной параметр типа
TTriangle, h1, h2, h3 — выходные вещественные параметры), проведенные
соответственно из вершин T.A, T.B, T.C. С помощью этой процедуры найти
высоты треугольников ABC, ABD, ACD, если даны координаты точек A, B, C, D.
Что пока сделала: нашла функцию Dist(кстати, на этом форуме))
Вот функция Dist
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Type
 
  TPoint = Record
    x : Real;
    y : Real;
  End;
 
  TTriangle = Record
    A : TPoint;
    B : TPoint;
    C : TPoint;
  End;
 
  Function Leng(a1, a2 : TPoint) : Real; 
  Begin
    Leng := Sqrt(Sqr(a1.x - a2.x) + Sqr(a1.y - a2.y));
  End;
 
  Function Area(a1, a2, a3 : TPoint) : Real; 
  Var 
    s1, s2, s3, p, S : Real;
  Begin
    s1 := Leng(a1, a2); 
    s2 := Leng(a2, a3);
    s3 := Leng(a1, a3);
    p := (s1 + s2 + s3)/2;
    S := Sqrt(p * (p - s1) * (p - s2) * (p - s3));
    Area := S;
  End;
 
  Function Dist(p, a, b : TPoint) : Real;
  Begin
    Dist := 2 * Area(p, a, b)/Leng(a, b); 
  End;

И нашла решенную задачу, но на С++
Код С++
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include <iostream.h>
#include <conio.h>
#include <math.h>
#pragma argsused
 
struct Tpoint
{
  double x,y;
};
struct Ttriangle
{
  Tpoint A, B, C;
};
 
double* Dist (Ttriangle trey)
{
  //длины сторон
  double AB=sqrt((trey.B.x-trey.A.x)*(trey.B.x-trey.A.x)+(trey.B.y-trey.A.y)*(trey.B.y-trey.A.y));
  double AC=sqrt((trey.C.x-trey.A.x)*(trey.C.x-trey.A.x)+(trey.C.y-trey.A.y)*(trey.C.y-trey.A.y));
  double BC=sqrt((trey.C.x-trey.B.x)*(trey.C.x-trey.B.x)+(trey.C.y-trey.B.y)*(trey.C.y-trey.B.y));
  //полупериметр
  double p=(AB+AC+BC)/2;
  double *h=new double[3];
  h[0]=(2/BC)*sqrt(p*(p-BC)*(p-AC)*(p-AB));
  h[1]=(2/AC)*sqrt(p*(p-BC)*(p-AC)*(p-AB));
  h[2]=(2/AB)*sqrt(p*(p-BC)*(p-AC)*(p-AB));
return h;
}
 
int main(int argc, char* argv[])
{
  Ttriangle ABC, ABD, ACD;
  cout<<"Enter A\n";
  cin>>ABC.A.x>>ABC.A.y;
  ABD.A.x=ABC.A.x;
  ABD.A.y=ABC.A.y;
  ACD.A.x=ABC.A.x;
  ACD.A.y=ABC.A.y;
  cout<<"Enter B\n";
  cin>>ABC.B.x>>ABC.B.y;
  ABD.B.x=ABC.B.x;
  ABD.B.y=ABC.B.y;
  cout<<"Enter C\n";
  cin>>ABC.C.x>>ABC.C.y;
  ACD.C.x=ABC.C.x;
  ACD.C.y=ABC.C.y;
  cout<<"Enter D\n";
  cin>>ACD.B.x>>ACD.B.y;
  ABD.C.x=ACD.B.x;
  ABD.C.y=ACD.B.y;
  double *H1,*H2,*H3;
 
  H1=Dist(ABC);
  cout<<"ABC:\n" ;
  for(int i=0; i<3; i++)
    cout<<H1[i]<<'\n';
 
  H2=Dist(ABD);
  cout<<"ABD:\n";
  for(int i=0; i<3; i++)
    cout<<H2[i]<<'\n';
 
  H3=Dist(ACD);
  cout<<"ACD:\n" ;
  for(int i=0; i<3; i++)
    cout<<H3[i]<<'\n';
  delete H1, H2, H3;
  getch();
  return 0;
}
Помогите пожалуйста доделать программку...

Заранее спасибочки!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.07.2012, 15:43
Ответы с готовыми решениями:

Найти площадь и высоту треугольника.
1) Дана сторона равностороннего треугольника. Найти площадь и высоту этого...

Дано стороны треугольника a,b,c. Найти высоту h и угол β
Дано стороны треугольника a,b,c. Найти высоту h и угол β. program zadacha1;...

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

Найти площадь треугольника, его высоту, радиус вписанной и описанной окружности
милые друзья, товарищи программисты помогите пожалуста с программами на поскале...

Найти наибольшую высоту треугольника, если известно координаты его вершин, используя функцию или процедуру
Найти наибольшую высоту треугольника, если известно координаты его вершин,...

1
Puporev
Модератор
55089 / 42343 / 29244
Регистрация: 18.05.2008
Сообщений: 100,060
19.07.2012, 08:18 2
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
uses crt;
type TPoint=record
            x,y:real;
            end;
     TTriangle=record
               a,b,c:TPoint;
               end;
function Dist(a,b:TPoint):real;
begin
Dist:=sqrt(sqr(a.x-b.x)+sqr(a.y-b.y));
end;
procedure Heights(t:TTriangle;var h1,h2,h3:real);
var a,b,c,p,s:real;
begin
a:=Dist(t.b,t.c);
b:=Dist(t.a,t.c);
c:=Dist(t.a,t.b);
p:=(a+b+c)/2;
s:=sqrt(p*(p-a)*(p-b)*(p-c));
h1:=2*s/a;
h2:=2*s/b;
h3:=2*s/c;
end;
var a,b,c,d:TPoint;
    t1,t2,t3:TTriangle;
    h1,h2,h3:real;
begin
clrscr;
writeln('Введите координаты точек:');
writeln('Точка А:');
readln(a.x,a.y);
writeln('Точка B:');
readln(b.x,b.y);
writeln('Точка C:');
readln(c.x,c.y);
writeln('Точка D:');
readln(d.x,d.y);
t1.a:=a;t1.b:=b;t1.c:=c;
t2.a:=a;t2.b:=b;t2.c:=d;
t3.a:=a;t3.b:=c;t3.c:=d;
Heights(t1,h1,h2,h3);
writeln('Высоты треугольника АВС:');
writeln(h1:0:2,' ',h2:0:2,' ',h3:0:2);
Heights(t2,h1,h2,h3);
writeln('Высоты треугольника АВD:');
writeln(h1:0:2,' ',h2:0:2,' ',h3:0:2);
Heights(t3,h1,h2,h3);
writeln('Высоты треугольника АСD:');
writeln(h1:0:2,' ',h2:0:2,' ',h3:0:2);
readln
end.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.07.2012, 08:18

Вычислить высоту и медиану треугольника, заданного координатами вершин
Треугольник задан координатами вершин A(0;0), B(22;21) и c(-22;23). Вычислить...

Вывести с помощью процедур медиану от стороны C и высоту треугольника со сторонами a,b,c
Вывести с помощью процедур медиану от стороны C и высоту треугольника со...

Даны три длины сторон треугольник. Найти медианы треугольника, сторонами которого являются медианы исходного треугольника
Даны три длины a,b,c сторон некторого треугольник. Найти медианы треугольника,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru