![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 13.09.2012
Сообщений: 122
|
![]()
program Treugolnik;
{$APPTYPE CONSOLE} {Определение длин сторон треугольника по заданным координатам точекю Найти также медиану, проведенную из наибольшего угла треугольника. При вычислении длин сторон, под корнем должно быть только целое выражение. Определить, является ли треугольник тупоугольным. Далее ввести координаты одной точки и определить, находится ли она внутри треугольника, если да, то найти расстояние от точки до ближайшей стороны.} uses SysUtils; const E=0.0001; var X1,Y1: Integer; { Координаты точки А } X2,Y2: Integer; { Координаты точки В } X3,Y3: Integer; { Координаты точки С } X4,Y4: Integer; { Координаты произвольной точки } AB,BC,AC: Real; { Длины сторон треугольника АВС } K: Real; { Медиана треугольника, проведенная из наибольшего угла } LA,LB,LC: Real; { Расстояния от произвольной точки до вершин треугольника } P1,P2,P3: Real; { Полупериметры образовавшихся треугольнков } S1,S2,S3: Real; { Площади образовавшихся треугольников } P: Real; { Полупериметр треугольника АВС } S: Real; { Площадь треугольника АВС } HAB,HBC,HAC: Real; { Высоты, опущеные из произвольной точки на стороны АВС } begin Writeln('Koordinati vershini A'); Write('X1='); Readln(X1); Write(#10, 'Y1='); Readln(Y1); Writeln('Koordinati vershini B'); Write(#10, 'X2='); Readln(X2); Write(#10, 'Y2='); Readln(Y2); Writeln('Koordinati vershini C'); Write(#10, 'X3='); Readln(X3); Write(#10, 'Y3='); Readln(Y3); Writeln('Koordinati proizvolnoi tochki'); Write(#10, 'X4='); Readln(X4); Write(#10, 'Y4='); Readln(Y4); AB := Sqrt (Sqr (X2-X1) + Sqr (Y2-Y1)); {Длина стороны АВ} BC := Sqrt (Sqr (X3-X2) + Sqr (Y3-Y2)); {Длина стороны ВС} AC := Sqrt (Sqr (X3-X1) + Sqr (Y3-Y1)); {Длина стороны АС} Writeln('AB= ', AB:6:4); Writeln('BC= ', BC:6:4); Writeln('AC= ', AC:6:4); { Находим полупериметр и площадь треугольника АВС } P := (AB+BC+AC)/2; S := Sqrt(P*(P-AB)*(P-BC)*(P-AC)); { Находим медиану , проведенную из большего угла треугольника АВС, зная, что больший угол лежит против большей стороны } if (AC>=BC) AND (AB>=AC) THEN K:=Sqrt(Sqr(((X2+X1)/2)-X3)+Sqr(((Y2+Y1)/2))-Y3) else if (BC>=AB) and (BC>=AC) then K:=Sqrt(Sqr(((X2+X3)/2)-X1)+Sqr(((Y2+Y3)/2))-Y1) else if (AC>=AB) and (AC>=BC) then K:=Sqrt(Sqr(((X3+X1)/2)-X2)+Sqr(((Y3+Y1)/2))-Y2); Writeln('Mediana, provedennya is bolshego ygla treygolnuka ABC= ', K:6:4); {Определение является ли треугольник ABC тупоугольным } if ((AB * AB) + (AC * AC) < (BC *BC)) then WriteLn('Treygolnuk ABC typoygolnyi' ) else WriteLn('Treygolnuk ABC ne tupougolnyi'); { Расстояние от произвольной точки до вершины А } LA := Sqrt (Sqr (X1-X4) + Sqr (Y1-Y4)); { Расстояние от произвольной точки до вершины B } LB := Sqrt (Sqr (X2-X4) + Sqr (Y2-Y4)); { Расстояние от произвольной точки до вершины C } LC := Sqrt (Sqr (X3-X4) + Sqr (Y3-Y4)); { Нахождение полупериметра каждого получившегося треугольника при проведении L1,L2,L3 } P1 := (AB+LA+LB)/2; S1 := Sqrt (Abs(P1*(P1-AB)*(P1-LA)*(P1-LB))); P2 := (BC+LB+LC)/2; S2 := Sqrt (Abs(P2*(P1-BC)*(P1-LB)*(P1-LC))); P3 := (AC+LA+LC)/2; S3 := Sqrt (Abs(P3*(P1-AC)*(P1-LA)*(P1-LC))); {Проверяем лежит точка в треугольнике или нет} if Abs((S1 + S2 + S3)-S) <= E then Writeln ('Tochka vne treygolnika') else begin Writeln ('Tochka vnytri treygolnika'); { Находим высоты треугольника ,проведенные от произвольной точки } HAB:= (2*S1)/ AB; Writeln ('HAB=',HAB); HBC:= (2*S2)/ BC; Writeln ('HBC=',HBC); HAC:= (2*S3)/ AC; Writeln ('HAC=',HAC); if (HAB>=HBC) AND (HAB>=HAC ) then Writeln('Rasstoyanie do bligzaishei storoni=',HAB:6:4) else if (HBC>=HAB) AND (HBC>=HAC ) then Writeln('Rasstoyanie do bligzaishei storoni=',HBC:6:4) else if (HAC>=HBC) and (HAC>=HAB) then Writeln('Rasstoyanie do bligzaishei storoni=',HAC:6:4) end; Readln; end. |
![]() |
![]() |
![]() |
#2 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,430
|
![]()
Во-первых, используйте кнопочку # для оформления кода.
Во-вторых, в этих строчках кода ошибка: Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись
![]() |
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 13.09.2012
Сообщений: 122
|
![]()
там вроде все правильно вычисляет...ошибка в самом последнем цикле...вроде знаки '<=' должны стоять...но и так неправильно находит...
|
![]() |
![]() |
![]() |
#4 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,430
|
![]()
Ох, ну ошибка-то плевая, из-за "копипасты".
Должно быть: Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись
![]() |
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 13.09.2012
Сообщений: 122
|
![]()
о...да....простите....бывает...не видят глаза...пока не отвыкнешь от работы....
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
минимальное расстояние от точки до функции С++ | Алинка | Общие вопросы C/C++ | 1 | 20.04.2012 00:43 |
Паскаль. Расстояние от точки до начала координат с использованием массивов. | OFFSET | Паскаль, Turbo Pascal, PascalABC.NET | 5 | 25.11.2011 23:12 |
Определить расстояние от точки до центра координат | sektor2011 | Помощь студентам | 3 | 23.01.2011 19:50 |
кратчайшее расстояние от заданной точки до ближайщей стороны треугольника | ddeman666 | Помощь студентам | 1 | 03.05.2010 14:47 |
Расстояние точки до поверхности | Mikhail Bakurov | Общие вопросы Delphi | 9 | 20.01.2009 23:05 |