fork(1) download
  1. #include <iostream>
  2. #include <math.h>
  3.  
  4. void SetRussianLocale() { setlocale(LC_ALL, "Russian"); }
  5.  
  6. double GetValueFromUser() {
  7. double value = 0;
  8. std::cin >> value;
  9. return value;
  10. }
  11.  
  12. bool IsTirangleExists(double a, double b, double c) {
  13. return (a + b != c) && (a + c != b) && (b + c != a);
  14. }
  15.  
  16. bool IsTriangleEquilateral(double a, double b, double c) {
  17. return (a == b) && (b == c);
  18. }
  19.  
  20. bool IsTriangleIsosceles(double a, double b, double c) {
  21. return (a == b) || (a == c) || (b == c);
  22. }
  23.  
  24. void AskUserForTirangleInput() {
  25. std::cout << "Введите три стороны треугольника\n";
  26. }
  27.  
  28. void ShowNonExistingTriangleErrorMessage() {
  29. std::cout << "треугольника не существует\n";
  30. }
  31.  
  32. void ShowTriangleIsEquilateralMessage() {
  33. std::cout << "треугольник равносторонний\n";
  34. }
  35.  
  36. void ShowTriangleIsIsoscelesMessage() {
  37. std::cout << "треугольник равнобедренный\n";
  38. }
  39.  
  40. void ShowTirangleAreaMessage(double area_of_triangle) {
  41. std::cout << "S = " << area_of_triangle << '\n';
  42. }
  43.  
  44. double PerimeterOfTriangle(double a, double b, double c) { return a + b + c; }
  45.  
  46. double AreaOfTriangle(double a, double b, double c) {
  47. double p = PerimeterOfTriangle(a, b, c);
  48. return sqrt(p * (p - a) * (p - b) * (p - c));
  49. }
  50.  
  51. void ShowTriangleProperties(double a, double b, double c) {
  52. if (IsTriangleEquilateral(a, b, c)) {
  53. ShowTriangleIsEquilateralMessage();
  54. } else if (IsTriangleIsosceles(a, b, c)) {
  55. ShowTriangleIsIsoscelesMessage();
  56. }
  57. double area_of_triangle = AreaOfTriangle(a, b, c);
  58. ShowTirangleAreaMessage(area_of_triangle);
  59. }
  60.  
  61. int main() {
  62. SetRussianLocale();
  63. AskUserForTirangleInput();
  64. double a = GetValueFromUser();
  65. double b = GetValueFromUser();
  66. double c = GetValueFromUser();
  67. if (!IsTirangleExists(a, b, c)) {
  68. ShowNonExistingTriangleErrorMessage();
  69. } else {
  70. ShowTriangleProperties(a, b, c);
  71. }
  72. }
  73.  
Success #stdin #stdout 0s 3236KB
stdin
2 2 2
stdout
Введите три стороны треугольника
треугольник равносторонний
S = 19.5959