fork download
  1. #include <iostream> // std::cout, std::fixed
  2. #include <iomanip> // std::setprecision //данную библиотеку подключаем для того, чтобы установить количество знаков после запятой
  3. #include <cmath> //данную библиотеку подключаем для того, чтобы была возможность извлечь корень и возвести в квадрат
  4. using namespace std;
  5.  
  6. //функция рассчитывает расстояние между двумя точками с заданными координатами
  7. double distance (double x1, double y1, double z1,
  8. double x2, double y2, double z2)
  9. {
  10. return sqrt( pow(x1-x2, 2) + pow(y1-y2, 2) + pow(z1-z2, 2));
  11. }
  12. //функция вычисляет площадь треугольника по формуле Герона
  13. double Geron (double x1, double y1, double z1,
  14. double x2, double y2, double z2,
  15. double x3, double y3, double z3)
  16. {
  17. double a,b,c,P;//стороны треугольника и полупериметр
  18. a = distance(x1,y1,z1, x2,y2,z2);
  19. b = distance(x2,y2,z2, x3,y3,z3);
  20. c = distance(x1,y1,z1, x3,y3,z3);
  21. P = (a+b+c)/2;
  22. return sqrt(P*(P-a)*(P-b)*(P-c));
  23. }
  24. //функция вычисляет площадь полной поверхности пирамиды
  25. double square (double x1, double y1, double z1,
  26. double x2, double y2, double z2,
  27. double x3, double y3, double z3,
  28. double x4, double y4, double z4)
  29. {
  30. double S1,S2,S3,S4,S;//площади треугольников и площадь полной поверхности пирамиды
  31. S1 = Geron(x1,y1,z1,x2,y2,z2,x3,y3,z3);
  32. S2 = Geron(x1,y1,z1,x2,y2,z2,x4,y4,z4);
  33. S3 = Geron(x1,y1,z1,x3,y3,z3,x4,y4,z4);
  34. S4 = Geron(x2,y2,z2,x3,y3,z3,x4,y4,z4);
  35. S = S1+S2+S3+S4;
  36. return S;
  37. }
  38. int main()
  39. {
  40. double x1,x2,x3,x4,y1,y2,y3,y4,z1,z2,z3,z4;//координаты вершин пирамиды
  41. cin >> x1 >> y1 >> z1
  42. >> x2 >> y2 >> z2
  43. >> x3 >> y3 >> z3
  44. >> x4 >> y4 >> z4;
  45. double S = square (x1,y1,z1,x2,y2,z2,x3,y3,z3,x4,y4,z4);
  46. cout << fixed << setprecision(1) << S << endl;
  47. return 0;
  48. }
Success #stdin #stdout 0s 15240KB
stdin
-3 0 0
0 6 0
3 0 0
0 2 5 
stdout
69.8