Написать и отладить программы с использованием функций:
1. Рассчитать площадь треугольника по известным координатам вершин с использованием формулы S= 0.5*abs(y1*(x3-x2)+ y2*(x1-x3) + y3*(x2-x1)), а также разработать функцию расчета площади треугольника по формуле Герона (значения сторон вычисляются внутри функции). Вывести на экран значения площади треугольника, подсчитанные по обеим формулам (функциям).
2. Вывести на экран сообщения о типе треугольника: остроугольный, прямоугольный, тупоугольный (задаются координаты вершин). Для расчета углов использовать теорему косинусов, например: c_a:= (b*b + c*c - a*a)/(2*b*c);
где c_a - косинус угла, противоположного стороне "a".
3. Определить нахождение точки "А" внутри прямоугольника, включающего область из "N" точек с координатами Xi, Yi, i=1,..., N< 21. Стороны прямоугольника параллельны осям координат. Координаты точек задаются в основной программе функцией Random(1000). Функция возвращает значение логического типа.
4. Определяющую симметричность матрицы (NxN). Функция возвращает значение логического типа.
|
|
Приведем пример использования функции для расчета суммы членов степенного ряда, представляющего тригонометрическую функцию Y= Sin(x).
PROGRAM fun_sin; Y
var y, y1, x1: real;
{--------------------- -}
Function Sin_r(x: real): real; -¶ 0 ¶ 2¶ 3¶ X
Var a, k, y: real; i: longint;
Begin
{if abs(x) > 2*Pi Then x:= 2*pi*Frac(x/(2*Pi)); {учет периодичности }
if abs(x) > 2*Pi Then x:= x - 2*pi*Int(x/(2*Pi)); { функции }
if abs(x) > Pi Then x:= Pi - ABS(x); { учет асимметрии функции }
i:= 0; a:= x; y:= a;
while abs(a)>0.0000001 do begin i:=i+1; k:=-x*x/(2*i*(2*i+1));
a:= a*k; y:= y + a end;
Sin_r:= y; { присвоение функции ее значения }
end;
{----------------------------------------------------------------}
Begin
write('Введите значение аргумента: x1= '); Readln(x1);
Y:= Sin_r(x1); { вызов функции, разработанной программистом }
Y1:= Sin(x1); { вызов стандартной функции }
writeln('значение аргумента: x1= ', x1);
writeln('расчетное значение функции: Sin_r(x1)= ', y:-11:8);
writeln('контрольный результат: Sin(x1) = ', y1:-11:8);
writeln('Нажмите Enter'); readln;
End.
В описании функции обязателен оператор присвоения функции ее значения. Изменение величины параметра-значения "x" в теле функции не отражается на его значении во внешней программе. Функция возвращает значение, которое во внешней программе присваивается переменной "y".