Определить, где находится начало координат, если известны координаты вершин треугольника (Pascal -> Си) - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Вопрос: Определить, где находится начало координат, если известны координаты вершин треугольника
type TXY = record x, y: Real end;
function sqt(a, b, c: TXY): Real;
begin
  sqt:=abs((a.x-b.x)*(c.y-b.y)-(a.y-b.y)*(c.x-b.x))/2;
end;
const
  eps=1e-4;
  o: TXY = (x:0; y:0);
var
  a, b, c: TXY;
  s1, s2, s3: Real;
begin
  Write('Введите координаты вершин треугольника: ');
  ReadLn(a.x,a.y,b.x,b.y,c.x,c.y);
  s1:=sqt(o,a,b); s2:=sqt(o,b,c); s3:=sqt(o,a,c);
  Write('Центр координат лежит ');
  if      abs(s1)<eps then WriteLn('на стороне AB')
  else if abs(s2)<eps then WriteLn('на стороне BC')
  else if abs(s3)<eps then WriteLn('на стороне AC')
  else if abs(s1+s2+s3-sqt(a,b,c))<eps then WriteLn('внутри треугольника')
  else WriteLn('вне треугольника');
end.

Решение задачи: «Определить, где находится начало координат, если известны координаты вершин треугольника (Pascal -> Си)»

textual
Листинг программы
//gcc 4.9.3
 
#include  <stdio.h>
#include  <math.h>
 
struct TXY
{
    double x;
    double y;
};
 
double sqt(const struct TXY a, const struct TXY b, const struct TXY c)
{
    return fabs((a.x - b.x) * (c.y - b.y) - (a.y - b.y) * (c.x - b.x)) / 2.0;
}
 
int main(void)
{
    const double eps = 1e-4;
    const struct TXY o = {.x = 0.0, .y = 0.0};
    
    struct TXY a, b, c;
    double s1, s2, s3;
    
    printf("Введите координаты вершин треугольника: ");
    scanf("%lf%lf%lf%lf%lf%lf", &a.x, &a.y, &b.x, &b.y, &c.x, &c.y);
    s1 = sqt(o, a, b);
    s2 = sqt(o, b, c);
    s3 = sqt(o, a, c);
    printf("Центр координат лежит ");
    if (fabs(s1) < eps) printf("на стороне AB\n");
    else if (fabs(s2) < eps) printf("на стороне BC\n");
    else if (fabs(s3) < eps) printf("на стороне AC\n");
    else if (fabs(s1 + s2 + s3 - sqt(a, b, c)) < eps) printf("внутри треугольника\n");
    else printf("вне треугольника\n");
    return 0;
}

Объяснение кода листинга программы

  1. Включаем необходимые заголовочные файлы
  2. Объявляем структуру для хранения координат
  3. Определяем функцию для вычисления площади треугольника по координатам вершин
  4. Объявляем переменные для хранения координат вершин треугольника и длины сторон
  5. Задаем константу для контроля (1e-4) и инициализируем начальную точку (o)
  6. Считываем координаты вершин треугольника с помощью функции scanf
  7. Вычисляем площади треугольников, используя функцию sqt и передавая ей координаты вершин
  8. Выводим сообщение о том, где находится центр координат, используя условные операторы if
  9. Возвращаем 0, чтобы указать, что программа успешно завершилась

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


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

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

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