Разветляющиеся алгоритмы: определить, являются ли заданные треугольники подобными - C (СИ)
Формулировка задачи:
заданы длины двух сторон треугольников. определить являются ли они подобными если да коэффициент пропорциональности
Решение задачи: «Разветляющиеся алгоритмы: определить, являются ли заданные треугольники подобными»
textual
Листинг программы
#include <stdio.h> #define _USE_MATH_DEFINES #include <math.h> #define EPSILON 0.000001 typedef struct { double alpha; double beta; double gamma; } TTriangeAngles; typedef struct { double a; double b; double c; TTriangeAngles angles; } TTriangle; void CalculateAngles(TTriangle* const trianglePtr) { double a = trianglePtr->a; double b = trianglePtr->b; double c = trianglePtr->c; trianglePtr->angles.alpha = acos((b * b + c * c - a * a) / (2 * b * c)); trianglePtr->angles.beta = acos((a * a + c * c - b * b) / (2 * a * c)); trianglePtr->angles.alpha = (trianglePtr->angles.alpha * 180) / M_PI; trianglePtr->angles.beta = (trianglePtr->angles.beta * 180) / M_PI; trianglePtr->angles.gamma = 180 - (trianglePtr->angles.alpha + trianglePtr->angles.beta); } int AreTrianglesSimilar(const TTriangle triangle1, const TTriangle triangle2) { int areSimilar = 0; int areAlphasEqual = 0; int areBetasEqual = 0; int areGammasEqual = 0; areAlphasEqual = (abs(triangle1.angles.alpha - triangle2.angles.alpha) < EPSILON); areBetasEqual = (abs(triangle1.angles.beta- triangle2.angles.beta) < EPSILON); areGammasEqual = (abs(triangle1.angles.gamma - triangle2.angles.gamma) < EPSILON); if (areAlphasEqual && areBetasEqual && areGammasEqual) { areSimilar = 1; } return areSimilar; } double GetSimilarityCoefficient(const TTriangle triangle1, const TTriangle triangle2) { return triangle1.a / triangle2.a; } int main(void) { TTriangle triangle1; TTriangle triangle2; triangle1.a = 8.0; triangle1.b = 8.0; triangle1.c = 6.0; triangle2.a = 4.0; triangle2.b = 4.0; triangle2.c = 3.0; CalculateAngles(&triangle1); CalculateAngles(&triangle2); if (AreTrianglesSimilar(triangle1, triangle2)) { printf("Triangles are similar, coeff: %.4f\n", GetSimilarityCoefficient(triangle1, triangle2)); } else { printf("Triangles are not similar!\n"); } return 0; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д