Определить, где находится начало координат, если известны координаты вершин треугольника (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, чтобы указать, что программа успешно завершилась
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д