c = sqrt(dx32*dx32 + dy32*dy32)
END
c /*******************Вычисление площади******************/
SUBROUTINE Strka()
Common /sides/ a,b,c, /Str/ S
call Calcsides()!Длины сторон
S = (sqrt((a+b+c)*(b+c-a)*(a+c-b)*(a+b-c)))/4
END
c /**************Вычисление минимального угла*************/
SUBROUTINE minugol()
Common /sides/ a,b,c,/Str/ S
common /vych/ cos_u,ugol
real Pi
call Calcsides()
Pi=3.1415926535
c /******* min storony******/
IF(a.LE.b.and.a.LE.c)THEN
ugol=(acos ( (b*b+c*c-a*a)/(2*b*c) )/Pi)*180 !По теореме Cos
elseIF(b.LE.c.and.b.LE.a)THEN
ugol=(acos ( (a*a+c*c-b*b)/(2*a*c) )/Pi)*180
else
ugol=(acos ( (a*a+b*b-c*c)/(2*a*b) )/Pi)*180
endIF
!ugol=(acos (cos_u)/Pi)*180
END
c /*******************Вычисление Cos********************/
SUBROUTINE mincos()
Common /sides/ a,b,c
common /Str/ S
common /vych/ cos_u,ugol
call Calcsides()
c /*******Poisk min storony******/
IF(a.LE.b.and.a.LE.c)THEN
cos_u=(b*b+c*c-a*a)/(2*b*c)
elseIF(b.LE.c.and.b.LE.a)THEN
cos_u=(a*a+c*c-b*b)/(2*a*c)
else
cos_u=(a*a+b*b-c*c)/(2*a*b)
endIF
END
c /*************************ПРОВЕРКИ***********************/
c /************ТОЧКИ НЕ ЛЕЖАТ НА ОДНОЙ ПРЯМОЙ***************/
integer*1 function prjamaja()
common /Coord/ x1,y1,x2,y2,x3,y3
prjamaja = 1
IF(x1.EQ.x2.and.x2.EQ.x3)THEN
prjamaja = 0
return
endIF
IF(y1.EQ.y2.and.y2.EQ.y3)THEN
prjamaja = 0
return
endIF
end
c /*************ТОЧКИ НЕ СОВПАДАЮТ*************/
integer*1 function tochka()
common /Coord/ x1,y1,x2,y2,x3,y3
tochka=1
IF(x1.EQ.x2.and.y1.EQ.y2)THEN
tochka=0
return
endIF
IF(x2.EQ.x3.and.y2.EQ.y3)THEN
tochka=0
return
endIF
IF(x1.EQ.x3.and.y1.EQ.y3)THEN
tochka=0
return
endIF
end
c /*************ДИАПАЗОН ЗНАЧЕНИЙ*************/
integer*1 function diapazon()
common /sides/ a,b,c
diapazon=0
IF(a.GT.(1e-23).AND.b.GT.(1e-23).AND.c.GT.(1e-23))THEN!минимальные значения
IF(a.LT.(1e+20).AND.b.LT.(1e+20).AND.c.LT.(1e+20)) diapazon=1!максимальные
endIF
END
Тесты
Координаты точек |
Результат |
|||||
Площадь |
Минимальный угол |
Косинус минимального угла |
||||
(1;5) |
(1;3) |
(1;9) |
NE KORREKTNIY VVOD, pryamaya |
|||
(0;0) |
(4;5) |
(4;5) |
NE KORREKTNIY VVOD, tochki sovpadayt |
|||
(0;0) |
(0;5) |
(5;0) |
12,50 |
45,00 |
0,70710678 |
|
(1;1) |
(134;2) |
(100;8) |
416,00 |
3,61 |
0,9980116 |
|
(-3,9) |
(4;-2) |
(-15;10) |
62,52 |
25,25 |
0,9044316 |
|
(0;0) |
(0,2;0,1) |
(0;2) |
0,20 |
6,00 |
0,9945055 |
|
(0,0009;0,0007) |
(0,0001;0,0001) |
(0,0009;0,0001) |
2.3999999E-007 |
36,86 |
0,8000000 |
Исследование №1
Данное исследование позволяет отследить, при каких входных данных возникает ситуация переполнения. Была проведена серия тестов, в которой для равностороннего треугольника вычислялась площадь.
Стороны |
Результат |
||
Площадь |
Минимальный угол |
Косинус минимального угла |
|
10 |
50 |
45 |
0,70710678 |
102 |
5000 |
||
105 |
5.0000000E+009 |
||
108 |
5.0000001E+015 |
||
1011 |
4.9999999E+021 |
||
1015 |
4.9999997E+029 |
||
1017 |
4.9999999E+033 |
||
1019 |
4.9999998E+037 |
||
1020 |
inf |
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.