Определить, где находится начало координат, если известны координаты вершин треугольника (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;
- }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы
- Объявляем структуру для хранения координат
- Определяем функцию для вычисления площади треугольника по координатам вершин
- Объявляем переменные для хранения координат вершин треугольника и длины сторон
- Задаем константу для контроля (1e-4) и инициализируем начальную точку (o)
- Считываем координаты вершин треугольника с помощью функции scanf
- Вычисляем площади треугольников, используя функцию sqt и передавая ей координаты вершин
- Выводим сообщение о том, где находится центр координат, используя условные операторы if
- Возвращаем 0, чтобы указать, что программа успешно завершилась
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д