georgi485
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Условие: Треугольник задан координатами вершин A (x1, y1, z1), B (x2, y2, z2), C (x3, y3, z3). Вычислить длину медианы AA1. Код, данный преподавателем: Код: a=sqrt(pow(x2-x3,2)+pow(y2-y3,2)+pow(z2-z3,2)); b=sqrt(pow(x1-x3,2)+pow(y1-y3,2)+pow(z1-z3,2)); c=sqrt(pow(x1-x2,2)+pow(y1-y2,2)+pow(z1-z2,2)); aa1=1/2*sqrt(2*pow(b,2)+2*pow(c,2)-pow(a,2)); | Немного покумекав, добавил проверку существования заданного треугольника, также оформил код Схема корявая Код: #include <stdio.h> #include <math.h> void main() { float AB, BC, AC, AA1, x1, y1, z1, x2, y2, z2, x3, y3, z3; printf("Введите координаты x, y и z вершины A:\n"); scanf("%f %f %f", &x1, &y1, &z1); printf("Введите координаты x, y и z вершины B:\n"); scanf("%f %f %f", &x2, &y2, &z2); printf("Введите координаты x, y и z вершины C:\n"); scanf("%f %f %f", &x3, &y3, &z3); AB=sqrt(pow(x2-x3,2)+pow(y2-y3,2)+pow(z2-z3,2)); BC=sqrt(pow(x1-x3,2)+pow(y1-y3,2)+pow(z1-z3,2)); AC=sqrt(pow(x1-x2,2)+pow(y1-y2,2)+pow(z1-z2,2)); if(AB+BC>AC && BC+AC>AB && AB+AC>BC) { AA1=sqrt(2*pow(AB,2)+2*pow(AC,2)-pow(BC,2))/2; printf("Длина медианы AA1 равна %f", AA1); } else printf("Такого треугольника не существует!"); } | |