fork download
  1. #include <iostream> // std::cout, std::fixed
  2. #include <iomanip> // std::setprecision //данную библиотеку подключаем для того, чтобы установить количество знаков после запятой
  3. #include <cmath> //данную библиотеку подключаем для того, чтобы была возможность извлечь корень
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8. int x1,x2,x3,x4,y1,y2,y3,y4,z1,z2,z3,z4;//координаты вершин пирамиды
  9. double ab,bc,ac,as,bs,cs;//длины сторон треугольников в пирамиде
  10. double P1,P2,P3,P4;//полупериметры треугольников
  11. double S1,S2,S3,S4,s;//площади треугольников и площадь пирамиды
  12. cin >> x1 >> y1>> z1 >> x2 >> y2 >> z2 >> x3 >> y3 >> z3 >> x4 >> y4 >> z4;
  13. ab = sqrt(((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)+(z1-z2)*(z1-z2)));//находим длину стороны АВ треугольника//аналогично для других сторон
  14. bc = sqrt(((x2-x3)*(x2-x3)+(y2-y3)*(y2-y3)+(z2-z3)*(z2-z3)));
  15. ac = sqrt(((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3)+(z1-z3)*(z1-z3)));
  16. as = sqrt(((x1-x4)*(x1-x4)+(y1-y4)*(y1-y4)+(z1-z4)*(z1-z4)));
  17. bs = sqrt(((x2-x4)*(x2-x4)+(y2-y4)*(y2-y4)+(z2-z4)*(z2-z4)));
  18. cs = sqrt(((x3-x4)*(x3-x4)+(y3-y4)*(y3-y4)+(z3-z4)*(z3-z4)));
  19. P1 = (ab+bc+ac)*0.5;//находим полупериметр треугольника АВС//аналогично для других треугольников
  20. P2 = (ab+bs+as)*0.5;
  21. P3 = (bc+cs+bs)*0.5;
  22. P4 = (ac+cs+as)*0.5;
  23. S1 = sqrt(P1*(P1-ab)*(P1-bc)*(P1-ac));//пользуясь формулой Герона находим площадь треугольника АВС//аналогично для других треугольников
  24. S2 = sqrt(P2*(P2-ab)*(P2-bs)*(P2-as));
  25. S3 = sqrt(P3*(P3-bc)*(P3-cs)*(P3-bs));
  26. S4 = sqrt(P4*(P4-ac)*(P4-cs)*(P4-as));
  27. s = S1+S2+S3+S4;//находим общую площадь пирамиды, состоящую из четырех треугольников
  28. cout << fixed << setprecision(1) << s << endl;
  29. return 0;
  30. }
Success #stdin #stdout 0s 15240KB
stdin
-3 0 0
0 6 0
3 0 0
0 2 5
stdout
69.8