Разветляющиеся алгоритмы: определить, являются ли заданные треугольники подобными - 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;
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.4 из 5
Похожие ответы