// // Лабораторная работа №5. Библиотека функций // lab5.h // #pragma once /* Директива pragma с параметром once гарантирует, * что данный загоовочный файл будет включен в компилируемый файл * не более одного раза. * * Директива pragma не входит в стандарт С++, * но работает в Visual C++ и многих других системах разработки. */ #ifndef LAB_5_H #define LAB_5_H /* Макрос условной компиляции поддерживается стандартом С++ и, * хотя и избыточный для Visual C++, гарантирует сохранение * структуры проекта при использовании любого компилятора. */ // Вычисление квадрата числа inline double sqr(double x) { return x*x; } /* Встраиваемые (inline) функции подставляются компилятором, * но только достаточно простые функции. */ // Вычисляет эвклидово расстояние между двумя точками на плоскости. // Параметры: // x1, y1, x2, y2 – вещественные координаты точек. // Возвращаемое значение: // расстояние между точками ( x1; y1 ), ( x2; y2 ). double distance ( double x1, double y1, double x2, double y2 ); // Вспомогательная функция сортировки трех значений. // Параметры: // a, b, c - значения для сортировки, // asc - флаг направления сортировки: // false - по убыванию (по умолчанию), // true - по возростанию. // Результат: // a, b, c отсортированные в соответствии со значением asc. void sort ( double &a, double &b, double &c, bool asc = 0); // Набор целочисленных констант, описывающих тип треугольника. enum triangle_type { tRight = 0, // прямоугольный tAcute, // остроугольный tObtuse // тупоугольный }; /* Перечисление - удобный способ ограничить набор значений, * которые может принимать переменная или возвращать функция. */ // Определяет тип треугольника, заданного тремя точками. // Параметры: // xa, ya, xb, yb, xc, yc – вещественные координаты точек // A ( xa, ya ), B ( xb, yb ), C ( xc, yc ). // Возвращаемое значение: // tRight - прямоугольный, // tAcute - остроугольный, // tObtuse - тупоугольный. triangle_type check_triangle_type ( double xa, double ya, double xb, double yb, double xc, double yc ); // Вычисляет площадь треугольника, заданного тремя точками. // Параметры: // xa, ya, xb, yb, xc, yc – вещественные координаты точек // A ( xa, ya ), B ( xb, yb ), C ( xc, yc ). // Возвращаемое значение: // площадь треугольника ABC. double square ( double xa, double ya, double xb, double yb, double xc, double yc ); // Вычисляет расстояние от точки до прямой, заданной двумя точками. // Параметры: // point_x, point_y, line_x1, line_y1, line_x2, line_y2 – вещественные координаты точек // P ( point_x; point_y ), L1 ( line_x1; line_y1 ), L2 ( line_x2; line_y2 ). // Возвращаемое значение: // расстояние от точки P ( point_x; point_y ) до прямой, заданной точками L1 ( line_x1; line_y1 ), L2 ( line_x2; line_y2 ). double distance_to_line ( double point_x, double point_y, double line_x1, double line_y1, double line_x2, double line_y2 ); #endif /* LAB_5_H */