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

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

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

Вопрос: Определить, где находится начало координат, если известны координаты вершин треугольника
Листинг программы
  1. type TXY = record x, y: Real end;
  2. function sqt(a, b, c: TXY): Real;
  3. begin
  4. sqt:=abs((a.x-b.x)*(c.y-b.y)-(a.y-b.y)*(c.x-b.x))/2;
  5. end;
  6. const
  7. eps=1e-4;
  8. o: TXY = (x:0; y:0);
  9. var
  10. a, b, c: TXY;
  11. s1, s2, s3: Real;
  12. begin
  13. Write('Введите координаты вершин треугольника: ');
  14. ReadLn(a.x,a.y,b.x,b.y,c.x,c.y);
  15. s1:=sqt(o,a,b); s2:=sqt(o,b,c); s3:=sqt(o,a,c);
  16. Write('Центр координат лежит ');
  17. if abs(s1)<eps then WriteLn('на стороне AB')
  18. else if abs(s2)<eps then WriteLn('на стороне BC')
  19. else if abs(s3)<eps then WriteLn('на стороне AC')
  20. else if abs(s1+s2+s3-sqt(a,b,c))<eps then WriteLn('внутри треугольника')
  21. else WriteLn('вне треугольника');
  22. end.

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

textual
Листинг программы
  1. //gcc 4.9.3
  2.  
  3. #include  <stdio.h>
  4. #include  <math.h>
  5.  
  6. struct TXY
  7. {
  8.     double x;
  9.     double y;
  10. };
  11.  
  12. double sqt(const struct TXY a, const struct TXY b, const struct TXY c)
  13. {
  14.     return fabs((a.x - b.x) * (c.y - b.y) - (a.y - b.y) * (c.x - b.x)) / 2.0;
  15. }
  16.  
  17. int main(void)
  18. {
  19.     const double eps = 1e-4;
  20.     const struct TXY o = {.x = 0.0, .y = 0.0};
  21.    
  22.     struct TXY a, b, c;
  23.     double s1, s2, s3;
  24.    
  25.     printf("Введите координаты вершин треугольника: ");
  26.     scanf("%lf%lf%lf%lf%lf%lf", &a.x, &a.y, &b.x, &b.y, &c.x, &c.y);
  27.     s1 = sqt(o, a, b);
  28.     s2 = sqt(o, b, c);
  29.     s3 = sqt(o, a, c);
  30.     printf("Центр координат лежит ");
  31.     if (fabs(s1) < eps) printf("на стороне AB\n");
  32.     else if (fabs(s2) < eps) printf("на стороне BC\n");
  33.     else if (fabs(s3) < eps) printf("на стороне AC\n");
  34.     else if (fabs(s1 + s2 + s3 - sqt(a, b, c)) < eps) printf("внутри треугольника\n");
  35.     else printf("вне треугольника\n");
  36.     return 0;
  37. }

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

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

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


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

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

9   голосов , оценка 3.778 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы