fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <cmath>
  4. #include <algorithm>
  5.  
  6. struct Triangle
  7. {
  8. double a, b, c;
  9. double perimeter, area;
  10.  
  11. Triangle(double in_a, double in_b, double in_c, double in_p, double in_area) : a(in_a), b(in_b),
  12. c(in_c), perimeter(in_p), area(in_area) {};
  13. };
  14.  
  15. class Trinagles
  16. {
  17. std::vector<Triangle> triangles;
  18.  
  19. public:
  20. void add( double a, double b, double c )
  21. {
  22. if (a >= b + c || b >= a + c || c >= a + b || a <= 0 || b <= 0 || c <= 0)
  23. return;
  24.  
  25. int p = (a + b + c) / 2;
  26. triangles.push_back(Triangle(a, b, c, a + b + c, sqrt(p * (p - a) * (p - b) * (p - c))));
  27. }
  28.  
  29. void ans()
  30. {
  31. sort (triangles.begin(), triangles.end(), [](Triangle a, Triangle b) {return a.perimeter < b.perimeter;});
  32. std::cout << "Perimeters: ";
  33. for (int i = 0; i < triangles.size(); i++)
  34. std::cout << triangles[i].perimeter << " ";
  35. std::cout << std::endl;
  36.  
  37. std::cout << "Areas: ";
  38. sort (triangles.begin(), triangles.end(), [](Triangle a, Triangle b) {return a.area > b.area;});
  39. for (int i = 0; i < triangles.size(); i++)
  40. std::cout << triangles[i].area << " ";
  41. }
  42. };
  43.  
  44. int main() {
  45. Trinagles t;
  46.  
  47. t.add(3, 5, 5);
  48. t.add(5, 6, 7);
  49. t.add(6, 7, 8);
  50. t.ans();
  51. return 0;
  52. }
Success #stdin #stdout 0s 4404KB
stdin
Standard input is empty
stdout
Perimeters: 13 18 21 
Areas: 15.4919 14.6969 4.24264